当前位置: 首页 > 面试题库 >

Ajax的冲洗问题

哈襦宗
2023-03-14
问题内容

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

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

  }
});

问题答案:

不能仅使用$ .get来完成HTTP流传输

插入<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

PS:这肯定会杀死您的(性能不佳)服务器。您应该访问http://pusherapp.com,该网站对小型网站是免费的。



 类似资料:
  • 问题内容: '; ob_flush(); flush(); 我有专用的服务器,因此可以进行更改。我正在运行apache和nginx作为代理服务器。 问题答案: 您正在使用,而没有,因此没有需要冲洗的东西。 它还取决于Web服务器和代理及其设置。 您应该禁用Nginx的缓冲(添加到配置文件并重新启动Nginx) 另外,检查您的 php.ini是否 包含和。

  • 本文向大家介绍C++ 冲洗刷新流,包括了C++ 冲洗刷新流的使用技巧和注意事项,需要的朋友参考一下 示例 默认情况下,文件流以及许多其他类型的流都被缓冲。这意味着写入流可能不会导致基础文件立即更改。为了迫使所有缓冲的写操作立即进行,可以刷新流。您可以直接通过调用flush()方法或通过std::flush流操纵器来执行此操作: 有一个流操纵器std::endl,结合了编写换行符和刷新流: 缓冲可以

  • 我用的是Hibernate4.3.10,最后是mysql 5.6。 对于刷新模式,默认为“自动”,对吗?在本例中,如果有关于持久化A、选择B、提交的步骤,那么hibernate应该先执行选择B,然后执行持久化A,对吗? (我的理解是基于https://dzone.com/articles/dark-side-hibernate-auto-flush,还是我误解了这篇文章?) 如果我的理解是正确的,

  • 问题内容: 好的,首先我为所有代码道歉,但是我觉得太多的代码总比不够好。我正在努力做一个简单的聊天客户端和印刷作家。使用现在的代码,它将与服务器类进行交互,并且可以很好地进行打印并打印我想要打印的内容。但是,当我删除’writer.flush();’时 它将停止打印。以我的理解-这显然是错误的-‘writer.println(outgoing.getText());’ 应该就足够了,因为这会发送试

  • 问题内容: 我必须更新我的Doctrine实体以匹配(可能很大)XML文件中的记录。我还必须根据XML中的数据更新ManyToMany关联。这是我在循环内执行的操作: 从XML获取数据 从数据库获取实体(如果不存在,则创建新实体) 设置新实体属性 获取当前的实体关联(getter返回对象) 清除所有关联(通过调用) 设置新的关联(通过在子循环中调用) 由EntityManager保留实体 *循环

  • 问题内容: 在工作中,我们有5个RFID读取器连接到运行Linux的PC。读取器都被识别为键盘,并将其输入(从芯片读取的内容)作为键输入事件序列发送。为了能够告诉哪个读者发送什么序列,我正在做一个原始阅读,并以此方式获取他们的输入。 问题是,RFID读取器生成的发送键盘事件仍在“ stdin”中,当我尝试通过via 读取(这次输入应由普通键盘生成)时,我首先得到“待处理” ”来自读者的输入(由10