如何在ajax和php中同时处理多个响应

问题描述 投票:0回答:1

在我的网页中,当我单击按钮时,请求将通过我的服务器上的 php 文件上的 ajax 进行。下面是php文件。

现在您可以看到它有很多 echo 语句,因此当服务器正在处理数据时,我的网页必须等待 php 文件完成其处理。

有什么技术可以同时处理每个 echo 语句吗?

意思是,我不需要等待整个响应,我可以将响应的每个部分附加到我的网页。

<?php
$i = 0;
while($i<1000000){
echo $i;
$i++;
}
?>
javascript php jquery ajax
1个回答
0
投票

首先你应该在 php 文件中设置标头以同时发送响应。

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
header('Connection: keep-alive');

使用 ob_flush()flush() 刷新系统输出缓冲区。 你可以创建一个像这样的函数:

function sendMessage($message)
{

    echo "data: $message" . PHP_EOL;
    echo PHP_EOL;
    ob_flush();
    flush();
}

并且 .htaccess 中的 zlib.output_compression 应该关闭。

php_flag zlib.output_compression Off

最后你可以使用EventSourceXMLHttpRequest来获取数据。

© www.soinside.com 2019 - 2024. All rights reserved.