Php 我可以看到ajax请求进行时加载了哪些数据吗?

Php 我可以看到ajax请求进行时加载了哪些数据吗?,php,ajax,mootools,Php,Ajax,Mootools,如果我在php中有类似的东西 $foo=0; while($foo<20){ echo "hello"; usleep(1000000); $foo=$foo+1; } $foo=0; 虽然($foo寻找Firefox的firebug扩展。有几个原因让你看不到它 来自AJAX请求的内容与任何其他http/php请求一样由服务器处理 所发生的事情是,数据被php缓冲区缓存,然后在缓存完成后将其刷新到输出中,然后由apache交付给您 因为数据太少,所以在处理完成之前不需要刷新这个缓冲区,所

如果我在php中有类似的东西

$foo=0;
while($foo<20){
echo "hello";
usleep(1000000);
$foo=$foo+1;
}
$foo=0;

虽然($foo寻找Firefox的firebug扩展。

有几个原因让你看不到它

来自AJAX请求的内容与任何其他http/php请求一样由服务器处理

所发生的事情是,数据被php缓冲区缓存,然后在缓存完成后将其刷新到输出中,然后由apache交付给您

因为数据太少,所以在处理完成之前不需要刷新这个缓冲区,所以您只能看到最终结果

如果您输出了大量数据,导致输出被提前刷新,那么您可能会得到它

另一个问题是ajax请求处理程序。我敢肯定,只有当服务器请求的输出完成并且浏览器拥有完整数据时,才会调用您(以及其他所有人)正在使用的onComplete(或类似)方法

也许可以使用不同的事件,或者自己编写ajax代码(不使用jQuery之类的东西),但我甚至不确定这是否能解决您的问题;因为这也可能与x http请求实现有关

我可以问一下你为什么要这样做吗?对于你的实际问题,可能有一个更简单的解决方案*我假设这不是你在网站上实际使用的代码)

如果执行flush(),则Dan

;命令,您将发送内容。如果在服务器级别进行压缩,则可能需要填充输出以填充数据包以使其发送

flush();

下面是一个示例:

正确的答案是,您可以在返回内容时看到内容。 其他答案部分正确,提到PHP输出缓冲区将保持输出“封闭”。。。但是可以禁用输出缓冲区

禁用输出缓冲区后,您需要在请求完成之前显示JQuery响应—您可以通过在与服务器的连接仍处于活动状态时定期更新浏览器来完成此操作。这个概念被称为“彗星”或“长轮询”

见以下问题:


是的,我有分机,我在问是否可以在回音时收集问候。当请求加载数据时,如果我能抓取hwat,则为否。首先,在PHP中,您需要在文档终止之前刷新OB缓冲区以输出。第二,ajax无论如何都不会捕获刷新的片段,并且会在得到有用的数据之前等待数据的结束。你应该看看COMET、sockets或mootools、APE,它们是一个可以做事件和轮询的解决方案。我并没有真正想做的事情,只是在做实验。thankspush解决方案不符合ajax的要求。也没有提到jquery。只需说一句。使用XML或JSON的长时间异步连接可以被视为长时间轮询,并且仍然是我通常称之为“Ajax”的。事实上,第一个链接上被接受的答案是我认为对这个问题有用的——引用“该插件是Bayeux协议的一个实现,目前支持长轮询(通过AJAX的本地服务器)”。我没有特别提到“推”这个词——这是你从答案中理解的。