【问题标题】:How to handle "Failed to load resource"如何处理“加载资源失败”
【发布时间】:2014-10-08 19:02:46
【问题描述】:

我正在编写 Javascript 以了解不同的网站(开发、登台和产品)是否已启动。 下面是我的代码。

function URLStatusCheck(url)
{
try {
    $.ajax(url,
    {
        contentType: "application/json; charset=utf-8",
        dataType: 'jsonp',
        crossDomain: true,
        statusCode: {
            404: function (xhr) {
                 alert("error 404");
            },
            200: function (xhr) {
                   alert("Site is UP");
                }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert("error");
         }
    
        }
    }).fail(function (jqXHR, textStatus, errorThrown) {
        alert("Fail");
    });
} catch (err) { alert(url); }
}

我遇到了无效 URL 的问题,以下错误显示在无效 URL 的浏览器命令中。

加载资源失败:服务器响应状态为 404(未找到)

加载资源失败:net::ERR_NAME_NOT_RESOLVED

那些错误我无法在任何地方捕获它们(try/catch、错误或 404)。 有人可以帮助我在哪里(方法或级别)处理这些错误。

谢谢, KPK

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您的语法不正确,您可能错过了对 jQuery 的引用,但无论如何,这段代码应该是较新的 JQuery > 1.8 中推荐的错误处理方式:

     function URLStatusCheck(url) {
        $.ajax(url, {
            contentType: "application/json; charset=utf-8",
            dataType: 'jsonp',
            crossDomain: true
        })
            .done(function (data, textStatus, jqXHR) {
            alert("success");
        })
            .fail(function (jqXHR, textStatus, errorThrown) {
            alert("error");
        })
            .always(function () {
            //alert("complete");
        });
    }
    

    但是,请记住,您可能会执行跨域请求(除非您要检查的源站点和目标站点位于同一域中),并且根据您的服务器配置,该请求可能会被阻止。因此,您必须在要从其他地方 ping 的服务器上启用 CORS。

    http://enable-cors.org/server.html

    【讨论】:

    • 感谢@ZenCoder。更新 jquery 后它工作正常.. 现在我可以在一个地方检查我所有的网站状态..
    【解决方案2】:

    ajax 方法选项有一个额外的右括号“}”

    function URLStatusCheck(url) {
        try {
            $.ajax(url,
            {
                contentType: "application/json; charset=utf-8",
                dataType: 'jsonp',
                crossDomain: true,
                statusCode: {
                    404: function (xhr) {
                        alert("error 404");
                    },
                    200: function (xhr) {
                        alert("Site is UP");
                    }
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert("error");
                }
    
                //} -- the extra one
            }).fail(function (jqXHR, textStatus, errorThrown) {
                alert("Fail");
            });
        } catch (err) { alert(url); }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-08-08
      • 2012-07-05
      • 1970-01-01
      • 2012-07-24
      • 2018-01-15
      • 2013-02-26
      • 2019-05-28
      • 2016-06-24
      • 2016-07-01
      相关资源
      最近更新 更多