JQuery Ajax调用总是遇到状态码为0的错误

时间:2013-03-16 00:17:56

标签: jquery ajax status deferred promise

我有一套相当复杂的脚本,大部分时间都可以使用。我想要做的是发出AJAX请求,然后在遇到401错误时再做一些事情。当他们获得401时,我发送他们进行身份验证,然后重新发送请求。我已经为ajaxPrefilter添加了一些处理,它看起来像这样:

jqXhr.then(function (response, status) {
    var deferred = $.Deferred(),
        data = response && response.d ? response.d : response,
        result = data && _.isArray(data.results) ? data.results : data;

    deferred.resolveWith(this, [result, status, jqXhr, response]);

    return deferred;
},
function (response, status, error) {
    var secondPromise = $.Deferred();

    if (response.status == 401) {
         // handle authentication
         // resend request
         // depending on outcome, resolve or reject secondPromise
    } else {
         // not authentication issue, just reject the secondPromise
    }

    return secondPromise;
}).promise(jqXhr);

基本上,“then”的第一部分只是解析延迟对象并将其发回(因此无论谁等待呼叫都会立即获得它)。第二部分(错误)检查401的错误代码(需要验证)。如果它是401,它将进行身份验证,重新发送请求并处理结果。如果它不是401,它会拒绝它。

问题是错误函数的响应,状态,错误参数总是如下:

response =状态为0,状态为0,statusText为“error”且没有响应文本的延迟对象。 status =“错误” error =“”

我是否有某种方法可以检测到错误?我可以在firebug的网络标签和Fiddler中清楚地看到响应代码显然是401。

有关于此的任何想法吗?

0 个答案:

没有答案