用ajax冲洗问题
我在我的php页面中使用了无限循环中的flush()
函数,它每秒都回显一个文本。 当我在浏览器中打开页面时,它可以工作! 但是当我通过jquery ajax加载它时它没有响应!
php页面
<?php if (ob_get_level() == 0) ob_start(); for ($i = 0; true/*$i<10*/; $i++){ echo "
Line to show. $i"; echo str_pad('',4096)."\n"; ob_flush(); flush(); sleep(1); } ob_end_flush(); ?>
jquery代码
$.ajax({ url: 'res.php', beforeSend: function( ) { $('#mydiv').html('loading...'); }, success: function( data ) { $('#mydiv').html( data ); } });
使用$ .get无法完成HTTP-Streaming
插入如下: http : //ajaxpatterns.org/archive/HTTP_Streaming.php 。
while (true) { ?> flush(); // Ensure the Javascript tag is written out immediately sleep(10); } ?>
HTTP流是一个非常复杂的黑客。 您应该考虑使用长轮询,而不是在每个浏览器中都可以使用。 似乎有一些解决方案 (幻灯片54)
简单的长轮询示例主题:
如何实施基本的“长轮询”?
This video shows how to do long-polling: http://www.screenr.com/SNH
PS:这肯定会杀死你的(性能不佳)服务器。 您应该查看http://pusherapp.com ,这对小型网站是免费的。
我说成功处理程序没有被调用,因为响应主体永远不会完全完成。