Jar*_*vec 7 javascript ajax streaming google-chrome xmlhttprequest
我试图通过ajax(通过XmlHttpRequest(= xhr)在Javascript中"流式传输"(从服务器到客户端).我使用的是在"HTTP Streaming"(推送)AJAX模式的跨浏览器实现中描述的修改后的handleResponse函数
function handleResponse() {
if (http.readyState != 4 && http.readyState != 3)
return;
if (http.readyState == 3 && http.status != 200)
return;
if (http.readyState == 4 && http.status != 200) {
clearInterval(pollTimer);
inProgress = false;
}
// In konqueror http.responseText is sometimes null here...
if (http.responseText === null)
return;
while (prevDataLength != http.responseText.length) {
if (http.readyState == 4 && prevDataLength == http.responseText.length)
break;
prevDataLength = http.responseText.length;
var response = http.responseText.substring(nextLine);
var lines = response.split('\n');
nextLine = nextLine + response.lastIndexOf('\n') + 1;
if (response[response.length-1] != '\n')
lines.pop();
for (var i = 0; i < lines.length; i++) {
// ...
}
}
if (http.readyState == 4 && prevDataLength == http.responseText.length)
clearInterval(pollTimer);
inProgress = false;
}
Run Code Online (Sandbox Code Playgroud)
使用php脚本,它可以刷新数据(没有ajax,它会在进行时真正将数据刷新到浏览器)
我在Firefox中没有问题,但谷歌Chrome和IE给了我一个空的responseText而xhr.readyState等于3.我发现在互联网上描述了这个问题,但它没有给我任何解决方案.
您知道吗,如何在Chrome中解决此实施问题?(w3c说,readyState中的responseText不能为NULL == 3 - Chrome实现了这条规则,但只给出了空字符串)
如果你不知道,你知道某些产品的工作解决方案吗?(开源框架,图书馆等)
非常感谢你的想法.
编辑: 解决方法是创建iframe,将脚本调用iframe并在此处刷新数据,并通过iframe从javascript获取数据.但这不是ajax解决方案.我真的很想看到纯粹的ajax解决方案.
| 归档时间: |
|
| 查看次数: |
26866 次 |
| 最近记录: |