2014-02-20 153 views
2

我有麻煩試圖ajax的成功後,刪除一個元素後,取下DOM元素..jQuery的:阿賈克斯成功

這裏是我的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

你肯定成功回調被觸發? –

+0

是的非常確定..在控制檯上返回200OK – NEWBIE

+0

您確定您的「成功」處理程序真的被調用嗎?你可以添加console.log或一個斷點來驗證? –

回答

0

SOLUTION: 這個問題實際上是在服務器端。如果您是dependi在成功事件時,你的服務器端必須總是返回一個JSON ..即使它是空的或你喜歡什麼。因爲成功的將觸發只有當如果你的評價返回true

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

這樣的成功將被觸發..

3

店的參考,然後刪除it.this方式?

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

我認爲在你的成功函數中,你應該't.remove();'而不是'$(t).remove();'因爲你定義了't = $(element)',所以它已經是一個jQuery對象。 – vekah

+0

試過它怎麼都沒有工作 – NEWBIE

+0

試過t.remove()沒有工作.. :) – NEWBIE