如何捕获jQuery AJAX错误?

AR.*_*AR. 22 javascript ajax error-handling jquery

将AJAX请求提交到站点时,可以使用jQuery promise方法轻松处理服务器端错误..done(),.fail()等等.但是,对于某些请求(例如一个无效的网站或一个不接受跨域请求),异常的调用时立即发生.以下是控制台中一个错误的示例:

XMLHttpRequest无法加载http://someotherserver/api/blahblah.原产地 http://localhost:52625不被访问控制允许来源允许的.

是的,我知道CORS ......这不是问题.我实际上在做的是尝试使用web api调用来测试服务器IP /名称是否正确

我知道errorjQuery请求语法中的选项:

$.ajax({
    url: remoteURL,
    type: 'GET',
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
}).etc.etc.
Run Code Online (Sandbox Code Playgroud)

此处处理错误,但仍在控制台中记录异常.将上述内容包装在一个try-catch块中似乎是合理的,但这似乎没有帮助.

我发现了这个问题,但解决方案涉及破解jQuery代码.当然有一种更好的方法来捕获这些错误,而不是堵塞控制台日志?

Mr.*_*tan 10

试试这个:

$.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);
    }
});
Run Code Online (Sandbox Code Playgroud)

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));
    }
});
Run Code Online (Sandbox Code Playgroud)


Shr*_*awa 2

您可以在 google chrome 中使用网络开发人员控制台。按 F12。并使用“网络”选项卡检查响应,对于 JavaSvript 和 jQuery 和 Ajax 错误,您可以使用“控制台”选项卡。:)

通过添加到您的 ajax 函数来尝试此操作:

error: function(XMLHttpRequest, textStatus, errorThrown) {
 alert(errorThrown);
Run Code Online (Sandbox Code Playgroud)

  • 这将用于调试目的 (3认同)