Javascript 如何捕获jQuery AJAX错误?

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调

当AJAX请求提交到站点时,使用jQueryPromise方法可以轻松处理服务器端错误
.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侦听器(请稍候,编辑答案)