Javascript 回调函数删除两个项,而不是单个项
这里出了什么问题:Javascript 回调函数删除两个项,而不是单个项,javascript,Javascript,这里出了什么问题: function deluser() { var id = $('.nameact').attr('data-id'); $.post('users-pro-del.php', {id}, function(data) { $('.nameact').remove(); $('.namesingle').eq(0).addClass('nameact'); }); } users pro del.php-从数据库中删除
function deluser() {
var id = $('.nameact').attr('data-id');
$.post('users-pro-del.php', {id}, function(data) {
$('.nameact').remove();
$('.namesingle').eq(0).addClass('nameact');
});
}
users pro del.php
-从数据库中删除用户
所以我想从屏幕上删除相应的项目$('.nameact').remove()代码>
并将active
状态赋予另一项(第一项):
$('.namesingle').eq(0).addClass('nameact')代码>
有时它工作得很好
但更常见的是-$('.namesingle')。eq(0)
也被删除
正如我在控制台中所看到的,在每个时刻只有一个.nameact
有什么帮助吗?Ajax具有异步特性。$.post之前的id=$('.nameact')可能与ajax请求之后的$('.nameact')不同。最好在任何地方都按Id命名
function deluser() {
var id = $('.nameact').attr('data-id');
console.log('id to delete: ' + id);
$.post('users-pro-del.php', {id}, function(data) {
$('.nameact[data-id="' + id + '"]').remove(); // to be sure we delete the same object in php and JS
console.log('deleted id: ' + id);
$('.namesingle').eq(0).addClass('nameact');
});
}新的.namesingle
是否也从数据库中删除了?@Michel,没有,在php
端,一切都很好。另外,在重新加载页面后-$('.namesingle')。eq(0)
-再次出现。它似乎可以工作。但是我认为-异步调用可以发生在回调函数外部,而不是内部。我们发送对象的id,然后服务器处理它一段时间,然后我们接收响应并调用回调函数。发送id和调用回调之间的时间可能足够长(取决于服务器、网络等)。没有人知道在前端这段时间发生了什么。