Prise en charge du codage de transfert de jQuery : fragmenté
P粉566048790
P粉566048790 2023-10-25 23:44:37
0
1
684

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粉566048790
P粉566048790

répondre à tous(1)
P粉366946380

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




?>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal