私はウェブ開発者です。私のスクリプトでは、header() を使用して「Transfer-Encoding:chunked」を設定します。そしてflush()をウェブページに。時分割でWebページに印刷されます。それは正常に動作します。しかし、jQuery.ajax() を使用して this.it を要求すると、常にすべて一緒に出力されます (チャンクされて役に立たない)。
これをどのように解決するのですか?jQuery ajaxでチャンクエンコーディングを使用しますか?
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);
}
?>