jQuery AJAX请求:没有端点监听

时间:2014-01-21 13:45:25

标签: jquery asp.net ajax json

我正在使用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");
    }
});

1 个答案:

答案 0 :(得分:3)

  

因为这不会触发jQuery ajax错误函数我的全局   处理程序没有把它拿起来。发生了什么,我怎么强迫这个   导致正确的错误?

仅当服务器发送非成功状态代码(超出范围200-299)时才会触发错误功能。当你想一想它实际上是有道理的。这正是HTTP协议中状态代码的目的 - >表明操作的状态。

因此,如果您希望触发错误处理程序,请修改服务器端脚本,使其更好地遵守HTTP协议,并返回例如400 Bad Request状态代码以及此错误JSON响应。我一直想知道有多少网站将错误作为JSON返回并将状态代码设置为200.

因此,您可以看到您是否尊重HTTP协议,还可以减少网站的带宽消耗 - >您显示的JSON的"Success"布尔属性变得无用。这是HTTP状态代码的作用。