Maison  >  Questions et réponses  >  le corps du texte

Prise en charge du codage de transfert de jQuery : fragmenté

Je suis développeur web. L'utilisation de header() dans mon script définit "Transfer-Encoding:chunked". et flush() à la page Web. Il sera imprimé en temps partagé dans la page web. Fonctionne bien. Cependant, lorsque je demande this.it en utilisant jQuery.ajax(), il est toujours affiché ensemble (le découpage est inutile).

Comment résoudre ce problème ? Vous utilisez l'encodage fragmenté dans jQuery ajax ?

P粉566048790P粉566048790329 Il y a quelques jours618

répondre à tous(1)je répondrai

  • P粉366946380

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

    Vous ne pouvez pas utiliser jquery.ajax pour lire en continu les réponses http fragmentées. jquery ajax appelle uniquement la fonction de rappel de réussite lorsque la connexion est terminée. Tu devrais utiliser Ce plugin jquery.

    Si vous utilisez php, vous pouvez utiliser le code suivant :

    <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>

    Côté serveur :

    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);
       }
    
    
    
    
    ?>

    répondre
    0
  • Annulerrépondre