XMLHTTP readyState 3未在Webkit中更新

时间:2012-12-23 14:28:56

标签: javascript ajax webkit xmlhttprequest

这个问题在这些论坛上被问过两次,但提供的答案对我不起作用。

问题是我有JSP页面正在返回并刷新少量输出。

我使用以下代码来读取输出:

var xmlhttp;
if (window.XMLHttpRequest) { 
    xmlhttp = new XMLHttpRequest(); 
} else { 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
}

xmlhttp.onreadystatechange = function() {               
    if (xmlhttp.readyState == 3) {
        alert(xmlhttp.responseText);
    }
}

xmlhttp.open("POST", "download.jsp", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader('X-Requested-With', "XMLHttpRequest");
xmlhttp.send($('#submitDownloadForm').serialize());

在Firefox上运行正常,在此过程中我会收到3个警报。

但是,在基于Webkit的浏览器(如Chrome和Safari)上,我会收到第一个警报,但在此过程完成之前不会给出其他警报。

其他答案已经说过更改Content-Type:text/plainContent-Type:application/octet-stream,但如果我这样做,readyState会直接跳转到4,就像进程已立即完成一样。

我找不到任何解决办法。

任何帮助都非常感谢,提前感谢所有人。

1 个答案:

答案 0 :(得分:0)

我在生成输出之前将以下代码添加到JSP文件中,这解决了基于Webkit的浏览器上的问题:

response.setContentType("application/octet-stream");

我现在每次刷新输出时都会收到更新。