我好像迷失在这里。我有一个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
提前致谢
答案 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);
},