【问题标题】:Jquery AjaxError not triggered, can't handle 302 or other ajax responseJquery AjaxError 未触发,无法处理 302 或其他 ajax 响应
【发布时间】:2011-02-08 08:32:21
【问题描述】:

//首先对不起4我的英语不好

我在这里和整个网络上阅读了很多(很多!)关于此类问题的帖子,但没有人帮助我。

我在我的网站上使用了许多 jquery ajax 请求,有时是为了获得 JSON 响应,有时只是为了在页面内加载 php/html 内容。

我做了一个通用函数来使用 jquery ajax 方法发送表单,现在一切正常,但我需要处理 XHR 对象的“状态”,因为一些 ajax 请求需要由经过身份验证的用户完成,我有解决会话超时问题。

当会话超时时,XHR 通常会返回 302 状态,因为在 ajax 调用页面上我会执行“header location xxx”。

问题是“简单”:我没有成功处理 302 或类似 jquery ajaxError 的状态

我想使用 jquery ajaxError 函数来处理我网站上的所有 ajax 请求。 当我调用带有标题位置的页面时,Firebug 向我显示 302 响应和位置,但 jquery 不处理... :(

你能帮帮我吗?非常感谢

【问题讨论】:

    标签: jquery status


    【解决方案1】:

    更新到 jQuery 1.5。它允许做这样的事情:

    $.ajax({
      statusCode: {404: function() {
        alert('page not found');
      }
    });
    

    【讨论】:

      【解决方案2】:

      非常感谢,但是...与 jquery 1.4.2 相同的结果,302(由于 php 重定向正常,后跟 200)无法处理 :(

      我解决了一些“黑客”问题:

      $.ajaxSetup({complete: onRequestCompleted});
          function onRequestCompleted(xhr,textStatus) {
              if (xhr.status == 410) {
                  window.location.href = xhr.getResponseHeader("Location");
              }
      }
      

      在我放的 ajax 加载页面上:

      header("Location:".FILENAME_LOGIN_SESSION_TIMEOUT, true, 410);
      

      它工作正常,但是......这是一个好习惯吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-02
        • 2011-02-22
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多