我有一個JavaScript函數,它使用jQuery對Web服務進行JSON調用。 在成功函數中,我需要評估JSON響應,並在必要時在同一個Web服務中調用另一種方法。函數調用ajax返回false
這是我如何做到這一點:
function firstAjaxCall(aid, tid) {
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "/webservices/Webservice.asmx/Method1",
data: "{ auctionId: '" + aid + "'}",
dataType: "json",
success: function (response) {
var respData = response.d;
//do some stuff
if (respData.HasEnded == true) {
clearInterval(tid);
var end = false;
end = endFunction(aid);
if (end) {
// do some other stuff
}
}
},
failure: function (errorMsg) { alert(errorMsg.toString()); }
});
}
並正在從阿賈克斯成功函數中調用的endfunction這樣:
function endFunction(aid) {
var hasEnded = false;
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "/webservices/Webservice.asmx/Method2",
data: "{ auctionId: '" + aid + "'}",
dataType: "json",
success: function (callbackData) {
var endRespData = callbackData.d;
hasEnded = endRespData.Success;
alert(hasEnded.toString());
},
failure: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
return hasEnded;
}
這裏是怪異的東西。阿賈克斯呼籲做得很好。服務器上的代碼按計劃運行。但是,如果我嘗試在endFunction(aid)
的成功函數中設置一個螢火蟲斷點,則不會命中,但會顯示警告框,顯示單詞true。這有點好,因爲我們似乎確實達到了成功的功能。然而,hasEnded
變量從未設置爲true,因此它總是返回false。 從Firebug控制檯調用endFunction(1)
將顯示一個警告框,其中包含單詞true
,並返回值false
。
怎麼回事?
謝謝爲答案! 試過上面的代碼,但是當我運行firstAjaxCall時,我得到「endcallback不是函數」。我想我需要更多關於這個回調事件的指導...... – 2011-02-01 19:16:40