成功事件从未在我的JavaScript中触发轮询事件

时间:2018-06-23 13:40:10

标签: javascript

编程的新手。 我正在尝试使用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}}“”

任何帮助都会很棒!

1 个答案:

答案 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属性。