Heim  >  Fragen und Antworten  >  Hauptteil

Unterstützen Sie jQuerys Transfer-Encoding:chunked

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粉566048790P粉566048790330 Tage vor619

Antworte allen(1)Ich werde antworten

  • P粉366946380

    P粉3669463802023-10-26 11:10:35

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

    Antwort
    0
  • StornierenAntwort