我在App Engine应用中提供一些GET请求,在Chrome中进行测试.虽然我可以在
javascript控制台看到一些调用导致一个500服务器错误,我似乎无法找到在我的jQuery代码中捕获这个错误,尽管阅读了许多类似的SO线程.我明白它表示服务器端错误,但我仍然希望能够从我的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错误的问题 – 这一点在this文章的最后一节中进行了简要的讨论.
我通过使用jquery-isonp捕获了这个应用程序抛出的所有500状态的工作.
解决方法
它看起来不像你正在使用jQuery的document.ready绑定. $().ready(…)版本已被弃用或多或少.尝试其中一个:
$(document).ready(function() { $.ajaxSetup({ error: function(x,e) { if (x.status == 500) { alert('Internel Server Error.'); } } }); });
$(function() { $.ajaxSetup({ error: function(x,e) { if (x.status == 500) { alert('Internel Server Error.'); } } }); });