【问题标题】:jQuery support Transfer-Encoding:chunkedjQuery 支持 Transfer-Encoding:chunked
【发布时间】:2012-05-31 23:53:25
【问题描述】:

我是一名网络开发人员。 在我的脚本中使用 header() 来设置“Transfer-Encoding:chunked”。和 flush() 到网页。 它将在网页上分时打印。 它工作正常。 但是,当我使用 jQuery.ajax() 请求 this.it 时,它总是一起输出(分块无用)。

如何解决这个问题?在 jQuery ajax 中使用分块编码?

【问题讨论】:

  • 嘿,你终于找到解决办法了吗?如果是这样,请在此处发布
  • 我遇到了一个完全相同的问题

标签: php jquery chunked


【解决方案1】:

您不能使用 jquery.ajax 连续读取分块的 http 响应。 jquery ajax 只有在连接终止时才会调用成功回调函数。你应该使用 thisjquery 插件。

如果您使用的是 php,那么您可以使用以下代码:

 <html>
        <head>
            <script src="jquery-1.4.4.js"></script>
            <script src="jquery.stream-1.2.js"></script>
            <script>

                var println = function(string){
                    $("#console").append(string+"<br />");
                }

                $(document).ready(function(){



                    $.stream("stream.php",{
                        open:function(){
                            println("opened");
                        },
                        message:function(event){
                            println(event.data);
                        },
                        error:function(){
                            println("error");
                        },
                        close:function(){
                            println("closed");
                        }
                    });



                });
            </script>
        </head>
        <body>


            <div id="console"></div>

        </body>
    </html>

在服务器端:

stream.php

<?php


   header('Content-Encoding', 'chunked');
   header('Transfer-Encoding', 'chunked');
   header('Content-Type', 'text/html');
   header('Connection', 'keep-alive');

   ob_flush();
   flush();

   echo("23123454645645646;");


   $p = "";
   for ($i=0; $i < 1024; $i++) { 
       $p .= " ";
   };
   echo($p.";");



   for ($i = 0; $i < 10000; $i++) {
      echo('6;string;');
      ob_flush();
      flush();
      sleep(2);
   }




?>

【讨论】:

  • jquery.stream 项目已移至 github 并重命名为 Portal,但 Portal 已停产并被 Vibe 吸收,但 Vibe 已重命名为 Cettia。转至cettia.io
  • @Stephan,请您维护一下图书馆好吗?只有少数人了解这个图书馆的重要性。我们能不能把它放到 github.com 上并冻结它,这样 10 年内没有人可以继续改名并混淆社区?
  • @YumYumYum Cettia 已经有一个维护者。这是他的 Github 个人资料:github.com/flowersinthesand
猜你喜欢
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多