我向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