簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM