使用ajax检测HTTP错误

Posted

技术标签:

【中文标题】使用ajax检测HTTP错误【英文标题】:detecting HTTP error using ajax 【发布时间】:2012-02-15 18:05:09 【问题描述】:

我正在使用 ajax 调用来检索一些 html 数据。在某些情况下,我可能会收到 HTTP 错误 403(由于一些 IE 错误Encountering 403 error while using ajax call on IE、Hash fragments with forward-slash throwing 403 errors with AJAX requests in IE)。

出于错误处理的目的,我想捕捉发生了什么错误并相应地显示一些错误消息。

我该怎么做?

可能是这样的

$.ajax(
    type : 'POST',
    data : data,
    cache : false,
    url : url,
    dataType : 'html'
    success : function()
        //if HTTP response is ok, diplay data
        //else if HTTP response gets 403 error, display some other message
    
);

【问题讨论】:

【参考方案1】:

引用documentation:

错误(jqXHR,textStatus,errorThrown) 功能 请求失败时调用的函数。 该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象、描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数的可能值(除了 null)是“timeout”、“error”、“abort”和“parsererror”。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受一个函数数组。每个函数都会被依次调用。注意:跨域脚本和 JSONP 请求不会调用此处理程序。

$.ajax(
    type : 'POST',
    data : data,
    cache : false,
    url : url,
    dataType : 'html'
    success : function()
        //if HTTP response is ok, diplay data
        //else if HTTP response gets 403 error, display some other message
    ,
    error: function()
        // Handle your error here
    
);

【讨论】:

谢谢。现在可以了。您能否指出与同一文档页面中的 statusCode 处理程序有什么区别?看来你可以使用类似statusCode: 404: function() alert('page not found');

以上是关于使用ajax检测HTTP错误的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 错误 405.0 - 不允许使用 Jquery ajax get 的方法

Django + ajax(jquery):http错误代码403(禁止)[关闭]

Django - 使用 Ajax 的 POST 方法错误“POST /......./ HTTP/1.1”405 0

间歇性 HTTP 403 禁止错误调用相同的 Ajax 代码

在 ajax 错误(HTTP 状态代码 0)中区分失败(无网络)和取消请求

SharePoint 2013下,使用ajax调用ashx报Http 302错误