我正在尝试查看是否可以在失败时存储对 ajax 调用的引用,然后稍后重试该调用。我尝试了以下方法:
$.ajax({
url: "controller/action",
data: {
params: "here"
}
})
.success(function (response) {
DoStuffHere();
})
.fail(function (error) {
ajaxRef = this;
DoOtherStuff();
})
DoOtherStuff 尝试使用引用进行 ajax 调用,如下所示:
function DoOtherStuff() {
if(ajaxRef)
{
$.ajax(ajaxRef);
}
}
显然,为了展示我要实现的目标,这过于简单化了。
这似乎确实进行了 ajax 调用,但问题是它似乎没有保留对 success
或 fail
属性的引用称呼。所以当调用成功返回时,它不会调用 DoStuffHere();
在我寻找这个问题的答案时,我发现代码说如果你在 success
或 中调用
函数,但在我的例子中,我需要在重试之前运行某些其他函数和 ajax 调用。$.ajax(this)
它会起作用>fail
有什么方法可以使 success
和 fail
与对 ajax 调用的引用一起携带?
最佳答案
您是否尝试过将成功/失败处理程序附加到 ajax 请求对象本身? 像这样:
var ajaxRef = {
url: "controller/action",
data: {
params: "here"
},
success: ajaxSuccess,
error: ajaxFailure
}
$.ajax(ajaxRef)
function ajaxSuccess(response){
DoStuffHere();
}
function ajaxFailure(error){
DoOtherStuff();
}
function DoOtherStuff() {
if(ajaxRef)
{
$.ajax(ajaxRef);
}
}
关于javascript - 如何使用成功和失败处理程序的引用重试 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45740318/