ajax请求失败的情况

时间:2012-02-29 12:39:40

标签: jquery ajax http http-status-code-404

我好像迷失在这里。我有一个jQuery请求发送GET请求与基本身份验证。我的问题是即使身份验证失败,也永远不会运行错误代码。 我的要求:

$.ajax({
    type: type,
    url: url,
    dataType: 'json',
    beforeSend: function(xhr) {
        xhr.setRequestHeader('Authorization', 'Basic ' + btoa(window.username + ":" + window.password));
    },
    success: callback,
    error:function(){
        console.log('ERROR: ' + jqXHR.status);
    },
    complete: function(jqXHR, textStatus) {
        console.log('VOTE: ' + jqXHR.status);
    }
});

我的JSON响应和Status Code都出错了。我做错了什么?

回复机构:

{
"error": {
    "code": 401,
    "message": "Authentication failed"
}
}

响应标题:

Status Code: 401
Date: Wed, 29 Feb 2012 12:45:03 GMT

提前致谢

3 个答案:

答案 0 :(得分:0)

我认为你没有定义传递给错误函数的变量。你试过吗

error: function(jqXHR, textStatus, errorThrown){
        console.log('ERROR: ' + jqXHR.status);
    },

在你的情况下,我认为它运行错误函数,但由于未定义jqXHR.status而给出错误

答案 1 :(得分:0)

function(){
    console.log('ERROR: ' + jqXHR.status);
}

不正确,因为未定义变量jqXHR,因此您在该行中收到了javascript异常。

function(jqXHR){
    console.log('ERROR: ' + jqXHR.status);
}

答案 2 :(得分:0)

将错误处理程序放在全局中以查看它是否有所不同(包含所有参数):

jQuery(document).ajaxError(function(event, jqXHR, ajaxSettings, errorThrown) {
    var errorMessage = "Ajax error: " + ajaxSettings.url + " : " + errorThrown + " : " + jqXHR.statusText + " : " + jqXHR.status;

    if (jqXHR.status != "0" || errorThrown != "abort") {
        alert(errorMessage);
    }
});

编辑注意:全局参数与本地化

略有不同
 error:function(jqXHR,textStatus,errorThrown){},

并明确表明成功?

success: function(returnedStuff){
    callback(returnedStuff);
},