如何处理“无法加载资源”

时间:2014-10-08 10:17:24

标签: javascript jquery

我正在编写Javascript以了解不同的站点(dev,staging和prod)是否为UP。 下面是我的代码。

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); }
}

我的无效网址存在问题,浏览器命令中显示以下错误,显示无效网址。

  

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

     

无法加载资源:net :: ERR_NAME_NOT_RESOLVED

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

谢谢, KPK

2 个答案:

答案 0 :(得分:2)

你的语法不正确,你可能会错过对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

答案 1 :(得分:0)

还有一个额外的结束括号"}"对于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); }
}