Maison > Questions et réponses > le corps du texte
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粉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); } ?>