我正在使用jQuery来检索JSON包来更新我的显示。我试图使用全局ajax处理程序来放入一个全局的“AJAX失败”处理程序。不幸的是,当我停止我的后端(ASP.NET)时,请求不会“失败”,它会发回
{"Success":false,"Message":"There was no endpoint listening at
http://localhost:8733/ that could accept the message. This is often
caused by an incorrect address or SOAP action. See InnerException, if
present, for more details."}
因为这不会触发jQuery ajax错误函数,我的全局处理程序不会启动它。发生了什么,我怎么强迫它导致正确的错误?
这是我的全局错误处理程序的存根
$(document).ajaxError(function (event, jqxhr, settings, exception) {
// Increase our error array
if (++ajaxURLArray[settings.url] >= ajaxMaxFailsBeforeMessage) {
console.log("Show AJAX error message");
}
});
答案 0 :(得分:3)
因为这不会触发jQuery ajax错误函数我的全局 处理程序没有把它拿起来。发生了什么,我怎么强迫这个 导致正确的错误?
仅当服务器发送非成功状态代码(超出范围200-299)时才会触发错误功能。当你想一想它实际上是有道理的。这正是HTTP协议中状态代码的目的 - >表明操作的状态。
因此,如果您希望触发错误处理程序,请修改服务器端脚本,使其更好地遵守HTTP协议,并返回例如400 Bad Request状态代码以及此错误JSON响应。我一直想知道有多少网站将错误作为JSON返回并将状态代码设置为200.
因此,您可以看到您是否尊重HTTP协议,还可以减少网站的带宽消耗 - >您显示的JSON的"Success"
布尔属性变得无用。这是HTTP状态代码的作用。