Javascript Webkit中未更新XMLHTTP readyState 3

Javascript Webkit中未更新XMLHTTP readyState 3,javascript,ajax,webkit,xmlhttprequest,Javascript,Ajax,Webkit,Xmlhttprequest,这个问题在这些论坛上被问了两次,但给出的答案对我来说并不适用 问题是我有一个JSP页面,它返回并刷新了少量的输出 我使用以下代码读取输出: var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = fun

这个问题在这些论坛上被问了两次,但给出的答案对我来说并不适用

问题是我有一个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)上,我收到了第一个警报,但在流程完成之前,不会收到另外两个警报

其他答案说更改内容类型:text/plain或Content-Type:application/octet-stream,但如果我这样做,readyState会直接跳到4,就好像过程立即完成一样

我找不到任何解决办法


非常感谢您的帮助,提前感谢大家。

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

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

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

不确定它是否有效,但您是否尝试过xhr.onprogress事件?@passwayr谢谢您的评论,但同样的问题仍然存在。还有其他想法吗?但在你的问题中,你说这将导致readyState直接跳到4…事实上,正是在这里我放置了set-content头,在我将其放入Ajax请求之前。