2016-07-01 4 views
0

ich die Datensätze gelöscht werden sollen, die dynamisch erstellt werden, aber der Code nicht haben einen Blicklöschen Datensatz aus einer dynamisch erstellten Form mit Ajax und php

script.js working..Please ist

$(function() { 

      $('#studentRecord').on('click', 'button.delete', function() { 

      var $tr = $(this).closest('tr'); 

      var $id = parseInt($(this).attr('id').split('-')[1]); 


      if (confirm("Are you sure you want to delete this record")) { 

       $.ajax({ 
        url: '/ab_batch/practice/db/action.php', 
        type: 'POST', 
        data: { 
         action: 'ajaxDelRecord', 
         id: JSON.stringify(id) 
        }, 

        success: function() {}, 


        error: function() {} 

       }); 

      } 


     }); 


    }); 

action.php

$action = (isset($_REQUEST['action']) && !empty($_REQUEST['action'])) ? $_REQUEST['action'] : null; 
switch ($action) { 
case 'ajaxDelRecord': 

     if (isset($_POST['id'])) { 
      $id = json_decode($_POST['id']); 
     } 

     $id = json_decode($_POST['id']); 
     print ($student->delRecord($id)) ? 'true' : 'false' ; 

     break; 

} 

Es gibt eine andere Datei db.php, die die APIs alle zum löschen enthält, ergänzen und aktualisieren

+0

'JSON.stringify (id)' sollte 'JSON.stringify ($ id)' sein, da Sie Ihre 'id' als' $ id' deklarieren, brauchen Sie nicht wirklich: 'JSON.stringify' wie Sie senden nur eine ganze Zahl an den Server. –

+0

@ArshSingh vielen Dank funktioniert es, aber die Seite muss neu geladen werden, um das Ergebnis zu sehen ... wie ich Ajax verwende sollte nicht das Ergebnis widerspiegeln, sobald ich die Schaltfläche zum Löschen drücken? –

+0

Sie sollten das div löschen, nachdem der Server Ihre Ajax-Anfrage beantwortet hat. Es wird nicht die Änderung widerspiegeln, bis Sie nicht zu Javascript sagen, um das spezifische html Element zu löschen, das Sie kürzlich löschten, indem Sie die Anforderung zum Server –

Antwort

3

JSON.stringify (id) sollte JSON.stringify ($ id) sein, da Sie Ihre ID als $ id deklarieren, brauchen Sie nicht wirklich: JSON.stringify, da Sie gerade eine ganze Zahl an den Server senden.

und zum Löschen der Zeile, die Sie gerade aus der Datenbank entfernt, können Sie einfach ersetzen Sie Ihren JavaScript-Code mit folgenden:

$(function() { 

      $('#studentRecord').on('click', 'button.delete', function() { 

      var $tr = $(this).closest('tr'); 

      var $id = parseInt($(this).attr('id').split('-')[1]); 


      if (confirm("Are you sure you want to delete this record")) { 

       $.ajax({ 
        url: '/ab_batch/practice/db/action.php', 
        type: 'POST', 
        data: { 
         action: 'ajaxDelRecord', 
         id: JSON.stringify($id) 
        }, 

        success: function() {}, 

         $tr.remove(); // removing the current deleted record from html. 
        error: function() {} 

       }); 

      } 


     }); 


    }); 

i $tr.remove(); in einem Erfolg Rückruf hinzugefügt haben, wie Sie bereits das übergeordnete Element deklariert haben des gelöschten Datensatzes, so müssen Sie nur verwenden: $tr.remove();, um den tr zu löschen.

+0

Seine funktioniert .... aber wenn ich den obersten Datensatz mit Seriennummer 1 löschen die Seite nicht automatisch ersetzt die next record mit serial no 1 ... stattdessen hat der zweite record eine serial no 2 und erst nach dem auffrischen zeigt er serial no 1 ... gibt es einen weg ??? Hoffe, ich störe dich nicht zu sehr –

+0

Warum nicht einfach die Seite automatisch aktualisieren, nachdem der Datensatz gelöscht wurde, so dass Sie sofort Ergebnis sehen, ich meine: add 'location.reload();' nach '$ tr.remove();' .. Wenn es Ihnen geholfen hat, denken Sie darüber nach, es als Antwort zu akzeptieren. Vielen Dank. –

Verwandte Themen