Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从PHP服务器接收来自Ajax的响应_Php_Javascript_Jquery - Fatal编程技术网

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

是否可以从PHP服务器接收来自Ajax的响应,php,javascript,jquery,Php,Javascript,Jquery,我正在尝试向大量联系人发送电子邮件,我希望能够测量发送的程度,即显示一个加载栏,显示发送电子邮件时发送的百分比。下面是html <div id="loading" style="height:20px;"></div> 请注意php服务器端代码 $query = "SELECT email FROM clientsdata"; while ($data = mysql_fetch_array($query)) { extract($data); mail

我正在尝试向大量联系人发送电子邮件,我希望能够测量发送的程度,即显示一个加载栏,显示发送电子邮件时发送的百分比。下面是html

<div id="loading" style="height:20px;"></div>
请注意php服务器端代码

$query = "SELECT email FROM clientsdata";
while ($data = mysql_fetch_array($query)) {
    extract($data);
    mail_user($email, $subject, $message);
    $no++;
    echo $no."px;";
}

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

您不能这样做,因为您的php只会在脚本结束时响应


您可以做的是将一个ID链接到数据库的每封电子邮件,这样之后您就可以在javascript中循环使用UID数组来链接ajax调用。

您需要一个异步请求。有几种方法可以做到这一点,比如长轮询或Web套接字。我不确定是否有任何框架,但似乎是相关的。

有很多PHP类可以用来更新网页中的可视进度条

例如:


Zend Framezork嵌入了这个功能。顺便说一句。

看看这个关于在数据进入时用jQuery显示ajax的例子。

你可以查询40个电子邮件地址,而不是全部。然后多次调用您的电子邮件脚本,每次ajax调用都会发送接下来的40封电子邮件。。。所以你可以很容易地设置进度条。 可能在数据库中创建一个包含所有要发送的电子邮件的电子邮件队列,每个ajax调用都会从队列中删除已发送的电子邮件

$query = "SELECT email FROM clientsdata";
while ($data = mysql_fetch_array($query)) {
    extract($data);
    mail_user($email, $subject, $message);
    $no++;
    echo $no."px;";
}