是否有可能从PHP服务器接收来自Ajax的响应

时间:2013-02-07 14:02:46

标签: php javascript jquery

我正在尝试向大量联系人发送电子邮件,我希望能够衡量发送的程度,即显示一个加载栏,显示发送电子邮件时发送的百分比。下面是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;";
}

更像是一个进度条,但它不起作用。

5 个答案:

答案 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似乎是相关的。