jQuery 支持 Transfer-Encoding:chunked
Posted
技术标签:
【中文标题】jQuery 支持 Transfer-Encoding:chunked【英文标题】:jQuery support Transfer-Encoding:chunked 【发布时间】:2012-05-31 23:53:25 【问题描述】:我是一名网络开发人员。 在我的脚本中使用 header() 来设置“Transfer-Encoding:chunked”。和 flush() 到网页。 它将在网页上分时打印。 它工作正常。 但是,当我使用 jQuery.ajax() 请求 this.it 时,它总是一起输出(分块无用)。
如何解决这个问题?在 jQuery ajax 中使用分块编码?
【问题讨论】:
嘿,你终于找到解决办法了吗?如果是这样,请在此处发布 我遇到了一个完全相同的问题 【参考方案1】:您不能使用 jquery.ajax 连续读取分块的 http 响应。 jquery ajax 只有在连接终止时才会调用成功回调函数。你应该使用 thisjquery 插件。
如果您使用的是 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>
在服务器端:
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);
?>
【讨论】:
jquery.stream
项目已移至 github 并重命名为 Portal,但 Portal 已停产并被 Vibe 吸收,但 Vibe 已重命名为 Cettia。转至cettia.io
@Stephan,请您维护一下图书馆好吗?只有少数人了解这个图书馆的重要性。我们能不能把它放到 github.com 上并冻结它,这样 10 年内没有人可以继续改名并混淆社区?
@YumYumYum Cettia 已经有一个维护者。这是他的 Github 个人资料:github.com/flowersinthesand以上是关于jQuery 支持 Transfer-Encoding:chunked的主要内容,如果未能解决你的问题,请参考以下文章