当前单击我的应用程序中的一个链接,触发AJAX调用(GET) - 如果成功 - 触发第二个,如果成功则调用第三个。
这样,当点击链接当前正在进行时,可以通知用户流程的哪个部分。
因此,在Django项目的模板文件中,单击回调主体,提到的链接如下所示:
$("#the-link").click(function(item)) {
// CALL 1
$.ajax({
url: {% url ajax_call_1 %},
data: {
// something
}
})
.done(function(call1Result) {
// CALL 2
$.ajax({
url: {% url ajax_call_1 %},
data: {
// call1Result passed here to CALL 2
}
})
.done(function(call2Result) {
// CALL 3
$.ajax({
url: {%url ajax_call_3 %},
data: {
// call2Result passed here to CALL 3
}
})
.done(function(call3Result) { // expected result if everything went fine
console.log("wow, it worked!");
console.log(call3Result);
})
.fail(function(errorObject) {
console.log("call3 failed");
console.log(errorObject);
}
})
.fail(function(errorObject)) {
console.log("call2 failed");
console.log(errorObject);
}
})
.fail(function(errorObject) {
console.log("call1 failed");
console.log(errorObject);
});
});
这对我来说很好。问题是,如果用户关闭浏览器并且呼叫未完成,我想阻止中断以下呼叫(因为它需要一些时间才能完成所有操作三),因为在每个GET请求中调用的Django视图函数中有一些额外的逻辑。
例如,如果用户在CALL 1期间单击链接并关闭浏览器,是否可以以某种方式继续使用以下CALL 2和CALL 3?
我知道通常我可以使用Celery Task来处理这个函数,但是这里仍然可以使用提到的链接调用吗?
非常感谢任何帮助!
答案 0 :(得分:1)
没有。整个Javascript环境由窗口定义,当窗口关闭时,所有Javascript好处都消失了。这可能有一百个很好的理由,与安全相关。