Jquery:在ajax成功后删除DOM元素

时间:2014-02-20 14:58:03

标签: javascript jquery ajax dom

我在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
});

有人可以解释为什么会这样吗?谢谢

2 个答案:

答案 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')
 }
?>

如果您的评估结果为真,则会触发成功。