2012-05-25 7 views
5

ich bin ein Webentwickler. in meinem Skript verwenden Sie header() um "Transfer-Encoding: chunked" zu setzen. und flush() zur Webseite. es wird in der Webseite Time-Shared gedruckt. es funktioniert ok. aber, wenn ich jQuery.ajax() verwenden, um dies zu beantragen. Es immer alle zusammen ausgeben (Chunked unuseful).jquery Unterstützung Transfer-Encoding: chunked? wie

Wie löst man das? Verwenden Sie Chunked-Codierung in jQuery Ajax?

+0

Hey, hast du endlich eine Lösung zu Dies ? Wenn ja, poste es hier –

+0

Ich bin in einem genau ähnlichen Problem stecken geblieben –

Antwort

11

Sie können jquery.ajax nicht verwenden, um die Chunked-HTTP-Antwort kontinuierlich zu lesen. jquery ajax ruft die Erfolgsrückruffunktion nur auf, wenn die Verbindung beendet wird. Sie sollten this jquery Plugin verwenden.

, wenn Sie PHP verwenden, dann können Sie diesen Code verwenden:

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

im Server-Seite:

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

Das 'jquery.stream' Projekt wird nach Github verlegt und in Portal umbenannt, aber Portal erreicht das Ende des Lebens und absorbiert in Vibe, aber Vibe wird in Cettia umbenannt . Gehen Sie zu http://cettia.io – Stephan

+1

@Stephan, können Sie bitte bitte die Bibliothek pflegen? Nur wenige Menschen verstehen die Wichtigkeit dieser Bibliothek. Können wir es bitte in github.com setzen und es so einfrieren, dass niemand in 10 Jahren seinen Namen ändert und die Community verwirrt? – YumYumYum

+2

@YumYumYum Cettia hat bereits einen Betreuer. Hier ist sein Github-Profil: https://github.com/flowersinthesand – Stephan

Verwandte Themen