php – jQuery支持Transfer-Encoding:chunked
作者:互联网
我是一名网络开发人员.
在我的脚本中使用header()来设置“Transfer-Encoding:chunked”.和flush()到网页.
它会在网页上分时打印.
它工作正常.
但是,当我使用jQuery.ajax()来请求this.it时总是输出所有(chunked unuseful).
怎么解决这个?在jQuery ajax中使用chunked编码?
解决方法:
你不能使用jquery.ajax连续读取chunked http响应.只有在连接终止时,jquery ajax才会调用成功回调函数.你应该用
this 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>
在服务器端:
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);
}
?>
标签:chunked,php,jquery 来源: https://codeday.me/bug/20190928/1828557.html