2017-06-29 87 views
0

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

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

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

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? 
     } 
    }); 
}); 
+2

如果你已经编写了代码,你不能去工作,那么你来对地方了。只需将您的代码(或相关部分)添加到问题中,因为没有这些,我们就无法提供帮助。请看[问]。 –

回答

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

你可以试试这个,但如果你想监听的事件发生,你需要的Node.js和插座。

+0

也许可以使用node.js,但这需要重写电子邮件生成器和发件人,这不是一项简单的任务。我们发送的电子邮件是模板驱动的响应式电子邮件,其中包含大约16个新闻故事和图像。 –

+1

为什么服务器端需要在Node中重写才能使用套接字?有websockets的PHP实现。 – ADyson