我正在尝试向大量联系人发送电子邮件,我希望能够衡量发送的程度,即显示一个加载栏,显示发送电子邮件时发送的百分比。下面是html
<div id="loading" style="height:20px;"></div>
然后是Javascript代码
$.ajax({
type: "POST",
url: "engine/send-mail.php",
data: "action=sendmail",
success: function (Databack) {
$('#loading').css('width', Databack);
}
});
注意php服务器端代码
$query = "SELECT email FROM clientsdata";
while ($data = mysql_fetch_array($query)) {
extract($data);
mail_user($email, $subject, $message);
$no++;
echo $no."px;";
}
更像是一个进度条,但它不起作用。
答案 0 :(得分:0)
你将无法这样做,因为你的php只会在脚本结束时响应。
您可以做的是将ID链接到数据库的每个电子邮件,之后您将能够在javascript中循环遍历UID数组以链接ajax调用。
答案 1 :(得分:0)
您可以使用许多PHP类来更新网页中的可视化进度条。
例如:http://www.m4d3l-network.com/developpement/php/simple-progress-bar/
Zend Framezork将此功能嵌入BTW。
答案 2 :(得分:0)
看看这个post关于在数据进入时用jQuery显示ajax。
答案 3 :(得分:0)
您可以查询例如。 40个电子邮件地址而不是全部。然后多次给你发电子邮件脚本,每次ajax调用你发送接下来的40封电子邮件......所以你可以很容易地设置一个progess栏。 也许在您的数据库中创建一个电子邮件队列,其中包含要发送的所有电子邮件,每个ajax调用都会从队列中删除已发送的电子邮件。
答案 4 :(得分:-1)
您需要异步请求。有几种方法可以做到这一点,比如长轮询或Web套接字。我不确定是否有任何框架,但this posting似乎是相关的。