我正在使用 PhoneGap 构建 Android 应用程序。使用 jQuery 或 Zepto,我可以使用 $.ajax 调用来调用网站 API。然而,当网站返回 401(未经授权)响应时,ajax 调用似乎没有回调 - 没有调用“成功”、“错误”或“完成”。
请注意,当响应为 200 或 500 时,相同的代码可以正常工作。
我正在使用 Zepto 1.0rc1 和/或 jQuery 1.7.2 与 PhoneGap 1.6.1 。
function make_base_auth(user, password) {
var tok = user + ':' + password;
var hash = btoa(tok);
return "Basic " + hash;
}
$('#button').on('touchstart', function() {
console.log("UPLOAD --- ");
$.ajax({
url: 'https://mywebsite/api/v1.0/test/?ts=' + new Date().getTime(),
type: 'GET',
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', make_base_auth('username', 'password'));
},
success: function(data, status, xhr) {
console.log("AJAX: SUCCESS: " + data);
$('h1').text("AJAX!!");
},
error: function(xhr, errortype, error) {
console.log("AJAX: FAIL: " + errortype + " - " + error);
$('h1').text("AJAX FAIL");
},
complete: function() {
console.log("--- Complete");
}
});
return false;
});
我刚刚遇到了同样的问题。当我收到 HTTP 401 并使用时
$.ajax({
...
timeout: 5000, // Some timeout value that makes sense
...
});
然后调用错误回调{"readyState":0,"status":0,"statusText":"timeout"}
。在这种情况下,您必须猜测真正的错误是 HTTP 401。
或者你可以使用
$.ajax({
...
async: false, // :-(
...
});
你的错误回调会得到类似的东西{"readyState":4,"responseText":"<html>...</html>","status":401,"statusText":"Unauthorized"}
back.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)