使用ajax和php从动态创建的表单中删除记录

使用ajax和php从动态创建的表单中删除记录,php,jquery,mysql,json,ajax,Php,Jquery,Mysql,Json,Ajax,我想删除动态创建的记录,但代码不起作用。请查看 script.js $(function() { $('#studentRecord').on('click', 'button.delete', function() { var $tr = $(this).closest('tr'); var $id = parseInt( $(this).attr('id').split('-')[1] );

我想删除动态创建的记录,但代码不起作用。请查看

script.js

$(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;

}
还有另一个文件db.php,其中包含用于删除、添加和更新的所有API

JSON.stringify(id)应该是JSON.stringify($id)当您将id声明为$id时,您实际上不需要:JSON.stringify,因为您只是向服务器发送一个整数

要删除刚从数据库中删除的行,只需将javascript代码替换为以下代码:

$(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() {}

                });

            }


        });


    });
我确实添加了
$tr.remove()
在成功回调中,因为您已经声明了已删除记录的父元素,所以只需使用:
$tr.remove()
要删除tr.

JSON.stringify(id)应该是JSON.stringify($id),因为您将id声明为$id,所以实际上不需要:JSON.stringify,因为您只是向服务器发送一个整数

要删除刚从数据库中删除的行,只需将javascript代码替换为以下代码:

$(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() {}

                });

            }


        });


    });

我确实添加了
$tr.remove()
在成功回调中,因为您已经声明了已删除记录的父元素,所以只需使用:
$tr.remove()
要删除tr.

JSON.stringify(id)
应该是
JSON.stringify($id)
,因为您将
id
声明为
$id
,您实际上不需要:
JSON.stringify
,因为您只是在向服务器发送一个整数。@arshingh非常感谢它的工作,但是需要重新加载页面才能查看结果……因为我使用的是ajax,结果不应该在我点击删除按钮后立即反映出来吗?您应该在服务器响应您的ajax请求后删除div。它不会反映这种变化,除非你不告诉javascript通过向服务器发送请求来删除你最近删除的特定html元素。让我在回答中告诉你,并将整个事情作为答案发布。好的。我会尝试…谢谢
JSON.stringify(id)
应该是
JSON.stringify($id)
当您将您的
id
声明为
$id
时,您实际上不需要:
JSON.stringify
,因为您只是在向服务器发送一个整数。@arshingh非常感谢它的工作,但是需要重新加载页面才能查看结果……因为我使用的是ajax,结果不应该在我点击删除按钮后立即反映出来吗?您应该在服务器响应您的ajax请求后删除div。它不会反映变化,除非你不告诉javascript删除你最近通过向服务器发送请求删除的特定html元素让我在回答中告诉你,并将整个事情作为答案发布好的..会尝试…谢谢正在工作..但是如果我删除序列号为1的最上面的记录,页面不会自动将下一条记录替换为序列号1…而第二条记录具有序列号2,并且只有在刷新后才会显示序列号1…有办法吗???希望我没有打扰你太多为什么不只是在记录被删除后自动刷新页面,这样你就能立即看到结果,我的意思是:添加
location.reload()
$tr.remove()之后。。。如果它对你有帮助,请考虑接受答案。谢谢。它可以工作…但是如果我删除序列号为1的最上面的记录,页面不会自动用序列号1替换下一条记录…相反,第二条记录有序列号2,只有在刷新它后才会显示序列号1…有办法吗???希望我没有打扰你太多为什么不只是在记录被删除后自动刷新页面,这样你就能立即看到结果,我的意思是:添加
location.reload()
$tr.remove()之后。。。如果它对你有帮助,请考虑接受答案。谢谢