ajax刷新问题


Flush problem with ajax

我在php页面的无限循环中使用了flush()函数,它每秒都会回显一个文本。当我在浏览器中打开页面时,它就工作了!但是当我通过jqueryajax加载它时,它没有响应!

php页面

    <?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();
?>

jquery代码

$.ajax({
  url: 'res.php',
  beforeSend: function(  ) {
    $('#mydiv').html('loading...');
  },
  success: function( data ) {
      $('#mydiv').html(  data );
  }
});

HTTP流式传输不能简单地使用$.get来完成

插入<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流是一个非常复杂的破解。您应该考虑使用长轮询,这种方法适用于所有浏览器。似乎有一些解决方案(幻灯片54)

简单的长轮询示例主题:

我如何实现基本的";长轮询"?

This video shows how to do long-polling: http://www.screenr.com/SNH

第页。S: 这肯定会杀死你的(糟糕的性能)服务器。你应该看看http://pusherapp.com这对于小型站点是免费的。

我认为没有调用成功处理程序,因为响应主体从未完全完成。