Javascript 另存为日志不';下载文件时不显示(使用AJAX调用servlet)

Javascript 另存为日志不';下载文件时不显示(使用AJAX调用servlet),javascript,ajax,jsp,Javascript,Ajax,Jsp,我在单击下载按钮时调用下载servlet。该调用是使用XMLHttpRequest对象的AJAX调用 var xhr = new XMLHttpRequest(); xmlhttp.open("POST","servlet",true); //servlet will be the servlet name xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlh

我在单击下载按钮时调用下载servlet。该调用是使用XMLHttpRequest对象的AJAX调用

var xhr = new XMLHttpRequest();

xmlhttp.open("POST","servlet",true); //servlet will be the servlet name       
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');    
xmlhttp.send(....); 

xhr.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200){

        //some logic
 }}
我得到的错误是:

虽然Fiddler显示 在答复中记录

服务器端:头('Content-type',//mmime-type); 标题('Content-Disposition','attachment;filename=test.txt')


这是因为您的
xhr.onreadystatechange
已经在处理下载。您可以尝试使用一个隐藏的
和一个隐藏的
来触发下载,而不是使用XHR。请您提供一些示例帮助。我需要使用IFrame来处理整个AJAX请求吗?不,如果你想触发下载,你根本不用AJAX。只需使用一个表单,让它指向iframe,然后提交该表单。实际上,我会冻结屏幕,直到进入ReadyStateChange。所以我在那里使用AJAX。。。。我可以用IFrame做类似的事情吗,,?有什么方法可以让我在OnReadyStet中处理下载更改本身吗?我认为这仍然是可能的。尝试收听iframe的
load
事件。