jQuery ajax在IE9中返回错误的错误代码

时间:2014-01-22 19:19:19

标签: jquery ajax internet-explorer google-chrome

我正在使用基于令牌的身份验证系统的应用程序,它需要在IE9 +中工作。我在这个项目上使用jQuery 1.9.1。

到目前为止,我一直在开发Chrome,并且只是在IE9中测试应用程序。

在每次ajax调用中,如果服务器以401状态代码响应,我会有一个错误回调,它将重定向到登录屏幕。代码如下:

return $.ajax({
    url: service_url+'/'+item,
    type: 'GET',
    dataType: 'json',
    beforeSend: function (request) {
        request.setRequestHeader("X-Token", $.cookie('access_token'));
    },
    error: function (jqXHR, status, error) {
        if (jqXHR.status === 401) {
            var redirect_location = encodeURIComponent(window.location.pathname+window.location.hash);
            window.location = 'Login/index.html?e=Unauthorized&redirect='+redirect_location;
        }
    }
});

这在Chrome中运行良好,但我注意到在IE9中没有重定向发生。在开发人员工具的网络选项卡中,我清楚地看到呼叫中出现401错误:

IE Network Tab Screenshot

如果我在错误回调中执行console.log(jqXHR.status)console.log(status),Chrome会返回401。 IE9返回500。我也尝试检查error参数,它只返回IE9中的文字"error",但在Chrome中返回"Unauthorized"。我不想总是重定向登录任何错误(我正在处理页面中的消息的服务器错误),只有当呼叫返回未经授权以强制用户登录时。

知道为什么会这样,并且有一个很好的解决方法吗?

0 个答案:

没有答案