我正在向 App Engine 应用程序发出一些 GET 请求,在 Chrome 中进行测试。虽然我可以在 javascript 控制台中看到某些调用导致 500 服务器错误,但尽管阅读了许多类似的 SO 线程,但我似乎无法在我的 jQuery 代码中捕获此错误。我知道它表示服务器端错误,但我仍然希望能够从我的 javascript 中捕获这样的错误。
我需要捕获错误,以便我可以计算响应的数量(成功或其他)并在收到所有呼叫响应时触发另一个函数。
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 响应有什么建议吗?
谢谢奥利
更新:
根据响应,我的 jquery 代码似乎是正确的,但由于某种原因,它只能捕获从我的应用程序收到的某些 500 个响应。这可能是 App Engine 如何返回错误的问题(我对此了解不多),或者 jquery 如何使用 jsonp 处理错误 - 这一点在本文的最后一段中进行了简要讨论。
我通过使用jquery-isonp来实现它,它捕获了应用程序抛出的所有 500 状态。