gpt4 book ai didi

javascript - 失败时重试 jquery ajax

转载 作者:搜寻专家 更新时间:2023-11-01 04:37:20 25 4
gpt4 key购买 nike

我有一个 jquery-ajax 调用 Controller 中的一个 Action 。有时调用失败,所以我想重试。

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 调用失败时 tryCount 始终为 1。此外,一旦 this.tryCount 大于 this.retryLimit,就永远不会达到最后一次返回。

想法?

最佳答案

我看到的东西很少。传入的参数实际上并不是对象的成员。它只是一个键/对的 JSON 映射。所以函数中不会存在像“this.tryCount”这样的东西。您可以做的是在您的函数中放置警报(或调试)并查看值是什么。可能它们未定义或为 0。

关于javascript - 失败时重试 jquery ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com