Поддержка jQuery Transfer-Encoding: по частям

я веб-разработчик. в моем скрипте используйте header() для установки «Transfer-Encoding: chunked». и сбросить() на веб-страницу. он будет печатать на веб-странице с разделением времени. это работает нормально. но когда я использую jQuery.ajax() для запроса this.it всегда выводит все вместе (разбито на части бесполезно).

как решить это? использовать фрагментированное кодирование в jQuery ajax?


person Zaric Zhang    schedule 25.05.2012    source источник
comment
Эй, у тебя наконец есть решение этой проблемы? Если да то выложи сюда   -  person Prashant Singh    schedule 10.01.2013
comment
Я застрял в точно такой же проблеме   -  person Prashant Singh    schedule 10.01.2013


Ответы (1)


вы не можете использовать jquery.ajax для непрерывного чтения фрагментированного http-ответа. jquery ajax вызовет функцию обратного вызова успеха только тогда, когда соединение прервется. Вам следует использовать этот подключаемый модуль jquery.

если вы используете php, вы можете использовать этот код:

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

на стороне сервера:

поток.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);
   }




?>
person Partha Pal    schedule 05.07.2012
comment
Проект jquery.stream перемещается на github и переименовывается в Portal, но Portal подошел к концу и был поглощен Vibe, но Vibe переименован в Cettia. Перейдите на cettia.io. - person Stephan; 13.05.2015
comment
@Стефан, не могли бы вы поддерживать библиотеку, пожалуйста? лишь немногие понимают важность этой библиотеки. Можем ли мы разместить его на github.com и сделать замороженным, чтобы через 10 лет никто не смог изменить его имя и сбить с толку сообщество? - person ; 05.08.2016
comment
@YumYumYum У Cettia уже есть сопровождающий. Вот его профиль на Github: github.com/flowersinthesand - person Stephan; 05.08.2016