我在ajax成功后尝试删除元素时遇到了麻烦。
这是我的ajax代码:
verifyRequest.denyUser = function(requestId,element){
$.ajax({
url: loaderURL+'idverified/denyRequest',
dataType:"json",
type:"post",
data:{
id:requestId,
},
success: function(data){
element.remove();
}
});
}
听这个事件:
$("#requestUsers ul li .remove").click(function(){
var id = $(this).attr("data-value"),
element = $(this).parent('li');
verifyRequest.denyUser(id,element);
});
问题在于 - ajax工作正常,但涉及到“成功:”部分 它不会删除元素。
我尝试了这段代码但是它有效但不适合我的需求:
$("#requestUsers ul li .remove").click(function(){
var id = $(this).attr("data-value"),
element = $(this).parent('li');
verifyRequest.denyUser(id,element);
element.remove();//and it did worked
});
有人可以解释为什么会这样吗?谢谢
答案 0 :(得分:4)
存储引用,然后将其删除。这样:
verifyRequest.denyUser = function(requestId,element){
var t = $(element);
$.ajax({
url: loaderURL+'idverified/denyRequest',
dataType:"json",
type:"post",
data:{
id:requestId,
},
success: function(data){
$(t).remove();
}
});
}
答案 1 :(得分:0)
<强>解:强> 问题实际上是在服务器端..如果你依赖成功事件,你的服务器端必须总是返回一个json ..即使它是空的或你喜欢什么。因为只有在
时才会触发成功<?php
if(isset($_POST['yourData']) && !empty($_POST['yourData'])){
if(//evaluate further){
// This will trigger success
echo json_encode(array());
}else{
throw new HttpException(403,'Unauthorized request');
}
}else{
throw new HttpException(404,'Not Found')
}
?>
如果您的评估结果为真,则会触发成功。