如果令牌过期,我正在尝试刷新AJAX调用。使用ajaxSetup
一切正常,但是请求忽略success
回调。
$.ajax({
url: _url
//async: false,
type: 'POST'
}).success(function(jsonP) {
console.log(jsonP);
}).error(
// ...
);
$.ajaxSetup({
tryCount: 0,
retryLimit: 2,
error: function(xhr, textStatus, errorThrown) {
if (xhr.status == 401 && (JSON.parse(localStorage.getItem('Auth')).user[0] != null)) {
refreshToken();
var request = this;
request.tryCount++;
setTimeout(function() {
if (request.tryCount <= request.retryLimit) {
//try again
$.ajax(request);
$('#loading-modal').modal('hide');
} else {
alert("Problème de connexion");
}
}, 1000);
return;
} else {
/* alert("Problème d'authentification");
$(".logout").trigger('click'); */
}
if (xhr.status == 500) {
//handle error
} else {
//handle error
}
}
});
答案 0 :(得分:0)
他们在$ .ajax()中有错误;句法。当我运行该代码时,它说成功不是功能。因此,我在$ .ajax语法下也进行了更正:
JS代码:
方法1 :参考链接:http://api.jquery.com/jquery.ajax/
$.ajax({
url: "https://www.google.co.in/abc.php", // _url, for time being replaced _url with another url
//async: false,
type: 'POST'
}).done(function(jsonP) {
console.log("jsonP=", jsonP);
}).fail(function() {
// ...
console.log("Error Occurred");
});
OR
方法2 :在$ .ajax中使用成功和错误功能的旧风格
$.ajax({
url: "https://www.google.co.in/abc.php", // _url, for time being replaced _url with another url
//async: false,
type: 'POST',
/*error: function() {
console.log("Error occurred");
},*/
success: function(jsonP) {
console.log("jsonP=", jsonP);
}
});
还有一点需要注意的是,如果$ .ajax()请求包含它自己的“错误”处理函数,则它将忽略以$ .ajaxSetup方法编写的错误函数。
$.ajaxSetup({
tryCount: 0,
retryLimit: 2,
error: function(xhr, textStatus, errorThrown) {
if (xhr.status == 401) {
refreshToken();
var request = this;
request.tryCount++;
setTimeout(function() {
if (request.tryCount <= request.retryLimit) {
//try again
$.ajax(request);
$('#loading-modal').modal('hide');
} else {
alert("Problème de connexion");
}
}, 1000);
return;
} else {
// commented existing code for testing purpose only
/* alert("Problème d'authentification");
$(".logout").trigger('click'); */
// for time being I had added here refresh ajax code to verify whether it's working fine or not
var request = this;
request.tryCount++;
setTimeout(function() {
if (request.tryCount <= request.retryLimit) {
//try again
$.ajax(request);
// $('#loading-modal').modal('hide');
} else {
alert("Problème de connexion");
}
}, 1000);
return;
}
if (xhr.status == 500) {
//handle error
} else {
//handle error
}
}
});
与“成功”回调忽略有关,以确保其正常工作。我刚刚更改了console.log FROM :console.log(jsonP);
TO :console.log(“ jsonP =”,jsonP);
成功回调正在运行。我猜这是由于错误的ajax语法无法正常工作。