jQuery support Transfer-Encoding:chunked


jQuery support Transfer-Encoding:chunked

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

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

你不能使用 jquery.ajax 连续读取分块的 http 响应。 jquery ajax 仅在连接终止时调用成功回调函数。你应该使用这个jquery插件。

如果您使用的是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>

在服务器端:

流.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);
   }


?>