我正在编写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
答案 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。
答案 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); }
}