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

时间:2011-04-01 20:45:40

标签: php ajax mootools

如果我在php中有这样的东西

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

我向该php文件发出ajax请求,我可以在请求进行过程中对数据做任何事情吗? 我的意思是,脚本每秒都回声问候,我看到请求只显示整个循环结束时它有什么数据,所以有没有办法可以在它回显时访问每个hello?

4 个答案:

答案 0 :(得分:0)

寻找Firefox的firebug扩展。

答案 1 :(得分:0)

你可以看到它的原因有几个。

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

正在发生的事情是数据被php缓冲区缓存,然后当它完成时将其刷新到输出。然后哪个apache会传递给你。

数据太少,以至于在进程完成之前无需刷新此缓冲区。所以你只看到了最终结果。

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

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

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

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

答案 2 :(得分:0)

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

flush();

以下是一个示例:http://example.preinheimer.com/flush.php

答案 3 :(得分:0)

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

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

请参阅以下问题:

Comet and jQuery

How do I implement basic "Long Polling"?

Comet In PHP