我想在请求完成之前访问AJAX数据,有效地实现这样的流式传输:
ajax_request.send();
interval = setInterval(function() {
continueParsing(ajax_request.responseText);
if (download_complete)
clearInterval(interval);
}, 64);
现在我有一个PHP的东西将请求分解成更小的块,但我宁愿一气呵成。什么是最好的方法(我只关心Chrome和Firefox)。
答案 0 :(得分:6)
好吧,从这样的PHP处理程序开始:
$content = file_get_contents('http://pplware.sapo.pt/feed/');
for($i = 0; $i < 10; $i++){
$content .= $content;
}
echo $content;
和这样的javascript:
var client = new XMLHttpRequest();
client.open('get', 'ajax.php');
client.send();
client.onprogress = function(){
console.log(this.responseText.length);
}
我得到这个控制台:
11183
137415984
1311572876
1313769728
所以,它有效......我想你可以弄清楚其余部分:)
答案 1 :(得分:2)
您最好使用WebSockets来执行此类操作,并为旧版浏览器提供适当的后备(例如以AJAX长轮询的形式)。
由于你正在使用PHP,快速谷歌搜索出现了这个项目 - http://code.google.com/p/phpwebsocket/,它可以提供一种简单的方法。如果浏览器不支持websockets,我不知道它是否有其他技术的后备,但如果不支持websockets,你可以将socket.io-client置于其顶部,只需使用phpwebsocket项目即可提供您的服务器层。