编程的新手。 我正在尝试使用django和celery开发一个Web应用程序。我想显示一个加载程序,直到一些后台芹菜执行任务,然后显示芹菜工作者获取的数据。 到现在为止,我的状态是 我的 loader.js 脚本是:
var myVar;
function myFunction() {
myVar = setTimeout(showPage, 3000);
}
function poll1() {
setTimeout(function() {
$.ajax({
url: "http://localhost:8000/celery-progress/task_progress/12/",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "GET",
success: function(myFunction) }}
(function poll(){
$.ajax({ url: "http://localhost:8000/celery-progress/task_progress/12/",type: "GET", success: function showPage1() {
document.getElementById("loader").style.display = "none";
document.getElementById("myDiv").style.display = "block";
}, dataType: "json"});
})();
function showPage() {
document.getElementById("loader").style.display = "none";
document.getElementById("myDiv").style.display = "block";
}
在加载html正文时,我尝试同时调用 poll1 和 poll 。 但是我的装载机无限期旋转。 轮询网址“ http://localhost:8000/celery-progress/task_progress/12/”返回的数据是json
“ {” complete“:是,” success“:是,” progress“:{” current“:100, “总计”:100,“百分比”:100}}“”
任何帮助都会很棒!
答案 0 :(得分:0)
您好,您必须为成功属性分配一个函数,这意味着您不应该像以前那样编写它(就像您正在使用另一个函数作为参数来定义一个新函数一样)< br />试试:
function poll1() {
$.ajax({
url: "http://localhost:8000/celery-progress/task_progress/12/",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
type: "GET",
success: myFunction
})
}
您做了另一项我不太了解的工作,我的意思是在poll1函数中使用setTimeout。
所以我将其删除。
现在,使用上面的代码,在AJAX成功3秒后,将调用showPage函数,如果您不想等待3秒,则可以直接将showPage直接分配给success属性。