使用ajax和php从动态创建的表单中删除记录
我想删除动态创建的记录,但代码不起作用。请查看 script.js使用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] );
$(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,其中包含用于删除、添加和更新的所有APIJSON.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()之后代码>。。。如果它对你有帮助,请考虑接受答案。谢谢