Unterstützen Sie jQuerys Transfer-Encoding:chunked
P粉566048790
P粉566048790 2023-10-25 23:44:37
0
1
683

Ich bin Webentwickler. Wenn ich header() in meinem Skript verwende, wird „Transfer-Encoding:chunked“ festgelegt. und Flush() zur Webseite. Es wird zeitgesteuert auf der Webseite gedruckt. Funktioniert gut. Wenn ich jedoch this.it mit jQuery.ajax() anfordere, wird es immer zusammen ausgegeben (Chunking ist nutzlos).

Wie kann dieses Problem gelöst werden? Chunked-Codierung in jQuery Ajax verwenden?

P粉566048790
P粉566048790

Antworte allen(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);
   }




?>
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage