[英]Jquery:Remove DOM element after ajax success
在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
});
有人可以解释为什么会这样吗?谢谢
存储引用然后将其删除。这样:
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();
}
});
}
解决方案:问题实际上是在服务器端。如果你依赖于成功事件,你的服务器端必须总是返回一个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')
}
?>
这样,如果您的评估返回true,将触发成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.