How can I catch jQuery AJAX errors?
当一个Ajax请求提交到一个站点时,使用jqueryPromise方法可以很容易地处理服务器端错误。
XMLHttpRequest cannot load
http://someotherserver/api/blahblah . Origin
http://localhost:52625 is not allowed by Access-Control-Allow-Origin.
是的,我知道CORS……这不是问题。我实际上要做的是尝试Web API调用来测试服务器IP/名称是否正确。
我知道jquery请求语法中的
1 2 3 4 5 6 7 | $.ajax({ url: remoteURL, type: 'GET', error: function (err) { console.log("AJAX error in request:" + JSON.stringify(err, null, 2)); } }).etc.etc. |
错误在这里处理,但是异常仍然记录在控制台中。将上述内容用
我发现了这个问题,但解决方案包括破解jquery代码。确实有更好的方法来捕获这些错误,而不是阻塞控制台日志??
试试这个:
1 2 3 4 5 6 7 8 9 10 11 | $.ajax({ url: remoteURL, type: 'GET', error: function (err) { console.log("AJAX error in request:" + JSON.stringify(err, null, 2)); } }).always(function(jqXHR, textStatus) { if (textStatus !="success") { alert("Error:" + jqXHR.statusText); } }); |
XHR听众:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $.ajax({ url: remoteURL, type: 'GET', xhr: function(){ var xhr = new window.XMLHttpRequest(); xhr.addEventListener("error", function(evt){ alert("an error occured"); }, false); xhr.addEventListener("abort", function(){ alert("cancelled"); }, false); return xhr; }, error: function (err) { console.log("AJAX error in request:" + JSON.stringify(err, null, 2)); } }); |
您可以在Google Chrome中使用Web开发人员控制台。按F12键。使用networks选项卡检查响应,对于javasvript、jquery和ajax错误,可以使用console选项卡。:)
尝试向Ajax函数中添加以下内容:
1 2 | error: function(XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown); |