支援jQuery的Transfer-Encoding:chunked
P粉566048790
P粉566048790 2023-10-25 23:44:37
0
1
706

我是網頁開發人員。 在我的腳本中使用 header() 設定「Transfer-Encoding:chunked」。並flush()到網頁。 它將在網頁中分時列印。 工作正常。 但是,當我使用 jQuery.ajax() 請求 this.it 時,它總是一起輸出(分塊無用)。

如何解決這個問題?在 jQuery ajax 中使用分塊編碼?

P粉566048790
P粉566048790

全部回覆(1)
P粉366946380

您不能使用 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);
   }




?>
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板