我正在为我的一个客户开发一个自定义电子邮件系统,作为我为我的客户提供的CMS的附加内容。我正在使用jQuery Ajax将所有信息发送到格式化电子邮件的PHP文件,向MySQL发送查询以从数据库获取所有电子邮件地址,并使用mail()发送电子邮件。这需要一些时间,我希望jQuery ajax在每次PHP脚本发送电子邮件时显示进度条。我搜索了类似于成功的东西:function()通过JSON从PHP脚本接收数据,允许jquery更新电子邮件的进度。
有没有人对此提出建议?这样的事情更可取:
$.ajax({
type: "POST",
url: "example.com",
data: {"test":"test","tester":"tester"},
PROGRESS: function(data){
$("div").html(data);
},
success: function(r){
alert(r);
}
});
});
答案 0 :(得分:2)
您可以使用xhr对象并将事件侦听器附加到 progress 事件
$.ajax({
//...
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(e) {
var p = e.loaded / e.total;
// update your progress bar here..
});
return xhr;
}
})
答案 1 :(得分:0)
您需要将其包含在setInterval()
函数内。您可以搜索 AJAX轮询。但是这里的想法是你不能在运行时从同一个PHP脚本定期发回信息,success
回调只在脚本完成后才触发ONCE。