2012-05-25 11 views
5

soy un desarrollador web. en mi secuencia de comandos usa el encabezado() para establecer "Transferir-Codificar: fragmentado". y vaciar() a la página web. se imprimirá en la página web de tiempo compartido. funciona bien. pero, cuando uso jQuery.ajax() para solicitar esto, siempre sale todo junto (fragmentado inutilizado).Compatibilidad con jquery Transferencia de codificación: ¿fragmentada? cómo

cómo solucionar esto? usar codificación fragmentada en jQuery ajax?

+0

Oye, ¿por fin llegamos a una solución esta ? Si es así, publíquelo aquí –

+0

Me he quedado atrapado en un problema exactamente similar –

Respuesta

11

no se puede usar jquery.ajax para leer continuamente la respuesta http fragmentada. jquery ajax llamará a la función de devolución de llamada correcta solo cuando finalice la conexión. Debería usar this jquery plugin.

si está usando PHP, puede utilizar este código:

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

en el lado del servidor:

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




?> 
+4

El proyecto 'jquery.stream' se movió a github y se renombró a Portal, pero Portal llegó al final de la vida y se absorbió en Vibe, pero Vibe se renombró a Cettia . Vaya a http://cettia.io – Stephan

+1

@Stephan, ¿puede mantener la biblioteca, por favor? solo algunas personas entienden la importancia de esta biblioteca. ¿Podemos ponerlo en github.com y congelarlo para que nadie en 10 años pueda seguir cambiando su nombre y confundir a la comunidad? – YumYumYum

+2

@YumYumYum Cettia ya tiene un mantenedor. Aquí está su perfil de Github: https://github.com/flowersinthesand – Stephan

Cuestiones relacionadas