Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax删除来自DB的具有动态id的表行_Javascript_Php_Jquery - Fatal编程技术网

Javascript 使用ajax删除来自DB的具有动态id的表行

Javascript 使用ajax删除来自DB的具有动态id的表行,javascript,php,jquery,Javascript,Php,Jquery,我有一个表,它的内容来自数据库。当我点击删除按钮时,我想用Ajax删除该行。实际上现在它正在工作,但是有一个bug,当我点击按钮时,所有的行都被删除了,然后如果我刷新,我被删除的行就会消失,其他行也会显示出来。但是正如我说的,它需要刷新。任何解决方案都将不胜感激 $('.dashboard订阅表单')。提交(()=>{ event.preventDefault(); const currentHiddBtn=$('.dash订阅表单btn'); console.log(currentHiddB

我有一个表,它的内容来自数据库。当我点击删除按钮时,我想用Ajax删除该行。实际上现在它正在工作,但是有一个bug,当我点击按钮时,所有的行都被删除了,然后如果我刷新,我被删除的行就会消失,其他行也会显示出来。但是正如我说的,它需要刷新。任何解决方案都将不胜感激

$('.dashboard订阅表单')。提交(()=>{
event.preventDefault();
const currentHiddBtn=$('.dash订阅表单btn');
console.log(currentHiddBtn.closest('tr');
const userCaution=confirm('要删除此报价?');
if(userCaution){//if admin坚持删除该行
常量deleteId=$('.dash订阅表单btn').attr('value');
$.ajax({
类型:“POST”,
url:“删除subscribe.php”,
数据类型:“json”,
数据:{
deleteId:deleteId
}, 
成功:(数据)=>{
如果(data.code==“200”){
log('It works!');
currentHiddBtn.closest('tr').css('background','tomato');
currentHiddBtn.closest('tr').fadeOut(1200,()=>{
});
}else if(data.code=='404'){
警报('发生错误!请重试');
}
}
});
}
});

我认为,在本例中,主要问题是使用CSS类作为选择器,无论单击哪个项目,它似乎都是选择第一个实例

导致这种情况的代码是:

constdeleteid=$('.dash订阅表单btn').attr('value');
您希望从从
.submit()
传递的
事件
对象中获取目标输入

我已经创建了一个示例,其中的一个示例可以适应您的代码,但这里是jQuery部分的快速预览

$('.dashboard订阅表单')。提交((事件)=>{
event.preventDefault()
console.log(event.target.elements[0][“value”])
$(“#单击的结果”).html(“输入值:“+event.target.elements[0][“Value]”)
})
它选择元素数组中的第一个元素作为输入。如果需要该按钮,可以使用
event.target.elements[1]


然后还可以使用返回的值删除具有相同id的
,而不是查找最近的。这可以在您的
ajax
调用的
success
部分中完成,而无需进行刷新。

我认为这是因为
delete subscribe.php
文件不存在。您在哪里运行delete?@misterjojojo否我已经创建了相关的itadd codes delete-subscribe.php,您所说的bug是什么意思,这就是所有行被删除?你可以使用
标题('location:yourpage.php');退出()以刷新页面。或者
setTimeout(函数(){window.location='index.php';},1000)
在ajax成功函数中,在ajax成功回调中看到这个问题,为什么不这样做:
$('#row-'+deleteId).css('background','tomato').fadeOut(1200)而不是使用
最近的()搜索元素。
?您要删除的
tr
有一个ID,因此只需使用该ID即可。