我在php页面的无限循环中使用了flush()
函数,它每秒都回显一个文本。当我在浏览器中打开页面时,它的工作原理!但是当我通过jquery ajax加载它时它没有响应!
<?php
if (ob_get_level() == 0) ob_start();
for ($i = 0; true/*$i<10*/; $i++){
echo "<br> Line to show. $i";
echo str_pad('',4096)."\n";
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
$.ajax({
url: 'res.php',
beforeSend: function( ) {
$('#mydiv').html('loading...');
},
success: function( data ) {
$('#mydiv').html( data );
}
});
答案 0 :(得分:1)
按以下方式插入<script> tags
:http://ajaxpatterns.org/archive/HTTP_Streaming.php。
<?
while (true) {
?>
<script type="text/javascript">
$('news').innerHTML = '<?= getLatestNews() ?>';
</script>
<?
flush(); // Ensure the Javascript tag is written out immediately
sleep(10);
}
?>
HTTP-streaming是一个非常复杂的黑客攻击。您应该考虑使用长轮询,而不是在每个浏览器中都可以使用。似乎有一些solutions(幻灯片54)
How do I implement basic "Long Polling"?
This video shows how to do long-polling: http://www.screenr.com/SNH
P.S:这肯定会杀死你的(性能不佳)服务器。您应该查看http://pusherapp.com,这对于小型网站是免费的。
答案 1 :(得分:0)
我会说没有调用成功处理程序,因为响应主体永远不会完全完成。