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