Javascript 如何捕获jQuery AJAX错误?
当AJAX请求提交到站点时,使用jQueryPromise方法可以轻松处理服务器端错误Javascript 如何捕获jQuery AJAX错误?,javascript,jquery,ajax,error-handling,Javascript,Jquery,Ajax,Error Handling,当AJAX请求提交到站点时,使用jQueryPromise方法可以轻松处理服务器端错误.done(),.fail()等。但是,对于某些请求(例如,发送到无效站点或不接受跨源请求的站点),调用时会立即发生异常。以下是控制台中一个错误的示例: XMLHttpRequest无法加载http://someotherserver/api/blahblah。起源 http://localhost:52625是访问控制允许原点不允许的 是的,我知道CORS…这不是问题所在。我实际上是在尝试一个web api调
.done()
,.fail()
等。但是,对于某些请求(例如,发送到无效站点或不接受跨源请求的站点),调用时会立即发生异常。以下是控制台中一个错误的示例:
XMLHttpRequest无法加载http://someotherserver/api/blahblah
。起源
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.
错误在这里处理,但异常仍记录在控制台中。将上述内容封装在try-catch
块中似乎是合理的,但这似乎没有帮助
我已经找到了,但解决方案包括破解jQuery代码。当然,有更好的方法来捕获这些错误,而不是阻塞控制台日志???您可以在google chrome中使用web developer控制台。按F12。使用Networks选项卡检查响应,对于Javasvcript、jQuery和Ajax错误,可以使用Console选项卡: 尝试将以下内容添加到ajax函数中:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
试试这个:
$.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));
}
});
我认为这是不可能的,因为错误记录是由浏览器网络监控层完成的。小型临时服务器将部署在野外营地环境中。我的用户需要为ajax web api调用设置服务器IP地址的选项。我需要一种方法来测试地址是否有效。如果有更好的方法,我很高兴听到。:)检查,也许你会得到你的解决方案。@ripa:恐怕不会-错误是在运行任何服务器端代码之前生成的。@AR。在ajax post错误出现之前!!!!:(这将用于调试purpose@ShreejiShah:是的,我当然在控制台上看到了错误。你的回答对实际问题没有帮助。:pI've thready.always()但它是在ajax请求发出后调用的,稍后的某个时候。我指的浏览器错误会在请求启动时立即发生。嗯……您可以尝试在发送请求之前添加一个XHR侦听器(请稍候,编辑答案)