我对控制器中的动作进行了jquery-ajax调用。有时呼叫失败,所以我想再次重试。
jQuery的AJAX:
return ajax({
url: getRootDir() + urlDoTask, // urlDoTask is something like "/Action/"
data: { param: someParam },
type: 'POST',
dataType: 'json',
tryCount: 0,
retryLimit: 3
}).then(function (data) {
// Do some stuff
return ....
}, function (xhr, textStatus, errorThrown) {
if (textStatus == 'timeout' || (xhr.responseText == "" && textStatus == 'error')) {
this.tryCount++; // this is always 1
if (this.tryCount <= this.retryLimit) {
//try again
$.ajax(this);
return;
}
return; // this point is never reached
}
if (xhr.status == 404) {
// Do some stuff
}
return ... // I want to reach it after this.tryCount > this.retryLimit
});
function getRootDir() {
var loc = window.location.pathname;
var dir = loc.substring(0, loc.lastIndexOf('/'));
return dir;
}
以上代码无法正常工作,每次ajax-call失败时,tryCount始终为1。此外,一旦this.tryCount大于this.retryLimit,就永远不会达到最后一次返回。
想法?
答案 0 :(得分:1)
我看到的东西很少。传入的参数实际上不是对象的成员。它只是一个密钥/对的JSON映射。因此函数中不存在“this.tryCount”之类的东西。您可以做的是在您的函数(或调试)中放置警报,并查看值是什么。可能它们未定义或为0.