我向App Engine應用程序發出一些GET請求,在Chrome中進行測試。雖然我可以在javascript控制檯看到一些調用導致500服務器錯誤,但我似乎無法找到在我的jQuery代碼中捕獲此錯誤,儘管讀取了許多類似的SO線程。我知道它表示服務器端錯誤,但我仍然希望能夠從我的javascript中捕獲這樣的錯誤。jquery ajax忽略500狀態錯誤
我需要捕獲錯誤,以便可以統計響應的數量(成功或否則),並在收到所有呼叫響應時觸發另一個函數。
Chrome的控制檯輸出:
GET http://myapp.com/api?callback=jQuery12345¶ms=restOfParams 500 (Internal Server Error)
我的電話:
function makeCall() {
var count = 0;
var alldata = $('#inputset').val();
var rows = alldata.split('\n');
var countmatch = rows.length;
for (i=0;i<rows.length;i++) {
data["param"] = rows[i]["val"];
$.ajax({
url: apiUrl,
type: 'GET',
data: data,
dataType: 'jsonp',
error: function(){
alert('Error loading document');
count +=1;
},
success: function(responseJson) {
count +=1;
var res = responseJson.results;
if (count == countmatch) {
allDoneCallback(res);
}
},
});
}
}
我已經嘗試了一些如下:
添加:
statusCode: {500: function() {alert('err');}}
呼叫。
使用:
$().ready(function(){
$.ajaxSetup({
error:function(x,e) {
if(x.status==500) {
alert('Internel Server Error.');
}
}
});
});
有沒有人有任何關於我怎麼能趕上500響應的建議?
感謝 奧利
UPDATE:
基礎上的反應,我的jQuery代碼看起來是正確的,但由於某些原因,它只會趕上從我的應用程序收到一定的500個響應。這可能是App Engine如何返回錯誤(我對此不太瞭解)或者jquery如何使用jsonp處理錯誤的問題 - 在this文章的最後一段中簡要討論了這一點。
我通過使用jquery-isonp得到了這個工作,它抓住了應用程序拋出的所有500個狀態。
不應該是'statusCode'而不是'status'嗎? – 2014-08-25 18:50:51