同花顺问题与阿贾克斯 [英] Flush problem with ajax

查看:160
本文介绍了同花顺问题与阿贾克斯的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的PHP页面中使用的flush()功能的无限循环,它呼应的文本每一秒。当我在浏览器中打开网页它的作品!但是当我通过jQuery AJAX加载它无任何反应!

PHP页面

 < PHP

如果(ob_get_level()== 0)ob_start()函数;

为($ i = 0;真/ * $ I小于10 * /; $ I ++){

        回声< BR>线显示$我。
        回声str_pad('',4096),\ N。

        使用ob_flush();
        冲洗();
        睡眠(1);

}

ob_end_flush()函数;

?>
 

jQuery的code

  $。阿贾克斯({
  网址:res.php,

  beforeSend:函数(){
    $('#mydiv)HTML(载入中...)。
  },
  成功:功能(数据){

      $('#mydiv')的HTML(数据)。

  }
});
 

使用$

解决方案

的HTTP流媒体无法做到的只是不用彷徨

插入<脚本>标签如下: http://ajaxpatterns.org/archive/HTTP_Streaming.php

 &LT ;?
      而(真){
    ?>
        <脚本类型=文/ JavaScript的>
          $(新闻)的innerHTML ='< = getLatestNews()>?;
        < / SCRIPT>
    &LT ;?
        冲洗(); //确保Javascript的标签被立即写到
        睡眠(10);
      }
    ?>
 

HTTP的流媒体是一个非常复杂的黑客攻击。您应该考虑使用长轮询,而不是在每一个浏览器,工作原理。它似乎有一些解决方案(幻灯片54)

简单长轮询的例子主题:

简单英寸长轮询"例如code?

 该视频演示了如何做长轮询:http://www.screenr.com/SNH
 

PS:这会杀了你的(糟糕的表现)服务器是肯定的。你应该看看 http://pusherapp.com 这是免费的小型网站。

I used flush() function in infinite loop in my php page, it echoes a text each second. when i open the page in browser it works! but when i load it via jquery ajax it doesn't response!

php page

    <?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 code

$.ajax({
  url: 'res.php',

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

      $('#mydiv').html(  data );

  }
});

解决方案

HTTP-Streaming can not be done simply using $.get

insert <script> tags as following: 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 is a very complicated hack. You should consider using long-polling instead which works in every browser. It seems there are some solutions (slide 54)

Simple long-polling example topic:

Simple "Long Polling" example code?

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

P.S: this will kill your(bad performance) server for sure. You should have a look at http://pusherapp.com which is free for small sites.

这篇关于同花顺问题与阿贾克斯的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆