重复AJAX调用直到JSON响应显示进程完成

时间:2017-06-29 09:29:20

标签: jquery ajax

我正在尝试转换中间件(PHP类型)页面,该页面批量发送电子邮件到jQuery / Ajax页面,一次发送一封电子邮件。这是由调用ajax函数调用的。我想同步重复ajax调用,直到json响应,例如data.status =“finished”,每次调用都会返回data.percentage,(完成百分比)逐步更新一个简单的进度条。除此之外,我想包括一个“停止”按钮来取消广播。调用页面不知道需要进行多少次调用。中间件将生成下一封电子邮件,并直接与SMTP主机通话,并将该电子邮件标记为已发送,计算出它的传输距离,以便它可以发回完成的百分比。

我已经看到了这方面的一些变化,但大多数解决方案似乎都知道如何循环调用ajax。

任何代码段都表示赞赏。这是我的代码没有任何循环或停止代码。

jQuery("#sendButton").click(function() {
   var ezineid = jQuery("#ezineid").val() ;
   var percentage = 0 ;
   var status = "" ;
   jQuery.ajax({  url: '/cms/emailsend.lasso',
       type: 'POST',
       dataType: 'json',
       async: false,
       data: {
       ezineid: ezineid
       },
       success: function(data) {
           // have the html to display now
           percentage = data.percentage ;
           status = data.status ;
           // update the progress bar  
           // data.status = finished?
         }
   });
});

1 个答案:

答案 0 :(得分:0)

var timeout = setTimeout(function () {
         $.ajax({
             url: "test.html",
             context: document.body
         }).done(function() {
          clearTimeout(timeout)
});
    }, 100);

你可以尝试这个,但如果你想听一个事件发生,你需要node.js和套接字。