Php ajax响应部分可用

时间:2016-04-02 09:21:39

标签: php ajax httprequest

我有一个好奇心问题,似乎没有找到正确的短语来表达我的意思,对于一个成功的Google搜索查询。

有些网站(主要是价格查询)会根据用户设置的标准对某些内容进行ajax查询(让我们假设它是php脚本),并且在查询完成后数据不会立即全部显示,但是你会看到一些从早期的响应中显示的部分(因为我认为它们之前可用)以及之后的部分。

我认为ajax请求是针对php脚本完成的,而php脚本又会查询不同的源并尽快返回数据,这意味着首先会发送更快的查询响应。

核心问题:

  

如何构建php脚本可以返回数据的机制   多次和ajax脚本不只是等待A响应?

我很确定有关于此的信息,但遗憾的是,甚至无法找到搜索它的条件。

修改

我虽然是一个很好的例子,它是廉价的机票预订服务,它可以查询不同的来源,并且似乎在可用时立即输出数据,这意味着不同航空公司的不同报价会在不同的时间出现。

希望有人可以减轻我的好奇心。

最佳,

Alari

1 个答案:

答案 0 :(得分:1)

在客户端,您需要onprogress。请参阅以下示例(从this answer复制):

var xhr = new XMLHttpRequest()
xhr.open("GET", "/test/chunked", true)
xhr.onprogress = function () {
  console.log("PROGRESS:", xhr.responseText)
}
xhr.send()

xhr.responseText将继续累积服务器给出的响应。这里的缺点是xhr.responseText包含累积的响应。您可以在其上使用substring来获取当前响应。

在服务器端,您可以执行输出缓冲以将响应分块,例如像:

<?php
header( 'Content-type: text/html; charset=utf-8' );
for($i = 0; $i < 100; $i++){
    echo "Current Response is {$i} \r\n";
    flush();
    ob_flush();
    // sleep for 2 seconds
    sleep(2);
}