我怎样才能捕获jQuery AJAX错误?
将AJAX请求提交到站点时,可以使用jQuery promise方法轻松处理服务器端错误。 .done()
.fail()
等。但是对于某些请求(例如,对于无效站点或不接受跨源请求的站点),在进行调用时会立即发生exception。 以下是控制台中一个错误的示例:
XMLHttpRequest无法加载
http://someotherserver/api/blahblah
。 Access-Control-Allow-Origin不允许使用原始http://localhost:52625
。
是的,我知道CORS ……这不是问题。 我实际上在做的是尝试使用web api调用来测试服务器IP /名称是否正确
我知道jQuery请求语法中的error
选项:
$.ajax({ url: remoteURL, type: 'GET', error: function (err) { console.log("AJAX error in request: " + JSON.stringify(err, null, 2)); } }).etc.etc.
此处处理错误,但仍在控制台中记录exception。 将上面的内容包装在try-catch
块中似乎是合理的,但这似乎没有帮助。
我发现了这个问题 ,但解决方案涉及破解jQuery代码。 当然有更好的方法来捕获这些错误,而不是堵塞控制台日志?
试试这个:
$.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听众:
$.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函数来尝试这个:
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(errorThrown);