我正在處理JavaScript中的以下Ajax代碼,我試圖在URL無法正確加載JSON時彈出對話框,原因可能是已過期令牌或不正確的標記,無論如何,我期待代碼出現錯誤或失敗,但不會發生。當URL可以成功加載JSON時,成功和完整的塊會按預期擊中,但是當URL失敗時沒有被擊中。我曾嘗試使用async: false
,並嘗試使用布爾變量weHaveSuccess進行檢查,但是console.log(weHaveSuccess);
即使在執行成功/錯誤之前,代碼的最後一行也正在執行,在我看來,它仍然是異步加載的。我想知道爲什麼當來自URL的JSON加載失敗時,錯誤塊未被命中。Ajax無法獲取JSON時出現錯誤或失敗未能獲取JSON
我的代碼
function checkUser(myURL, newAccessToken, weHaveSuccess) {
$.ajax({
type: "GET",
dataType: "jsonp",
async: false,
url: myURL + newAccessToken,
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus);
console.log("Error: " + errorThrown);
},
success: function (data) {
console.log("Hello 2 " + JSON.stringify(data));
weHaveSuccess = true;
console.log('Message from Success ' + weHaveSuccess);
},
complete: function() {
console.log('Message from Complete ' + weHaveSuccess);
}
}).done(function (data) {
alert("Success");
console.log(data);
}).fail(function (data) {
console.log(data);
alert("Failed");
}).always(function() {
alert("In Always");
});
console.log(weHaveSuccess);
}
提前感謝!
你爲什麼要處理「錯誤」和「成功「,但也處理」完成「和失敗」?你只需要實現它的一種方式,而不是兩個。 – ADyson
試過這個,它擊中所有正確的處理程序:https://jsfiddle.net/1rLqcLkb/我得到兩個警報「Failed」和「In Always」,在控制檯中,我得到了「狀態」和「錯誤」行,然後是「失敗」數據對象。 –
最初,我剛剛使用成功/錯誤,因爲它d idn't工作我玩弄完成/失敗。 –