2014-02-07 47 views
3

有人能告诉我这段代码有什么问题吗?Jquery ajax请求

该函数将帮助删除mysql表中的特定数据。数据已成功删除,但jquery ajax函数的响应并不符合我的预期。

function removeMember(id,url){ 
var data = "action=removeMember&id="+id; 
var action = ajaxReturnData('POST',data,url); 
if(action == '1'){ 
    $(".msg").html("done"); 
    $("#span_delete_"+id).parent().parent().empty().hide("slow"); 
}else if(action.response == '0'){ 
    $(".msg").html("failed"); 
} 

}

/*User defined functions */ 
function ajaxReturnData(method,data,url){ 
$.ajax({ 
    url: url, 
    data: data, 
    type: method,   
    success: function(data) { 
     return data; 
    }, 
    error : function(jqXHR, exception){ 
     return '0'; 
    } 
}); 
} 
+0

然而[如何返回从AJAX调用的响应?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Quentin

回答

1

AJAX是异步的。你不能有你的success回调返回数据,因为它是jQuery的$.ajax,它将调用它,并且它没有监听返回值。只要请求是发送的,AjaxReturnData将立即退出,而不是在收到响应时退出。

你需要沿着回调(实际上,你需要重新考虑你的逻辑。“AjaxReturnData”将现在有,你知道,Ajax调用不返回数据的一个奇怪的方法)

function removeMember(id,url){ 
    var data = "action=removeMember&id="+id; 
    var action = ajaxReturnData('POST',data,url,function() { 
    $(".msg").html("done"); 
    $("#span_delete_"+id).parent().parent().empty().hide("slow");  
    }, function() { 
    $(".msg").html("failed"); 
    }); 
} 

function ajaxReturnData(method,data,url,onSuccess,onError){ 
$.ajax({ 
    url: url, 
    data: data, 
    type: method,   
    success: onSuccess, 
    error : onError 
}); 
} 
+0

感谢的另一个副本为你的建议朋友 – manipvd