【问题标题】:IFRAME response interpreted as a file by IE6IFRAME 响应被 IE6 解释为文件
【发布时间】:2011-05-31 04:39:27
【问题描述】:

我在 IE6 中遇到了一个奇怪的行为,我需要一些帮助来解决这个问题。

我使用 javascript 将以下 DOM 元素添加到文档正文的末尾:

<IFRAME id="qq-upload-handler-iframe0" style="DISPLAY: none" src="javascript:false;" />

<FORM method="post" target="qq-upload-handler-iframe0" encType="multipart/form-data" style="DISPLAY: none" action=/AgriShare-AD-Sys/ajaxfileupload?clientId=importSubmissionFromExcelLinkId&qqfile=AB_PTPTA_10358.xls>
  <INPUT type="file" value="AB_PTPTA_10358.xls">
</FORM>

然后我使用 javascript 提交表单。 action 指向一个 servlet,它返回以下内容:

HTTP/1.1 200 OK
Date: Fri, 27 May 2011 23:33:48 GMT
Server: Oracle-Application-Server-10g/10.1.3.5.0 Oracle-HTTP-Server
Set-Cookie: JSESSIONID=b59f0434f57ace32aebc8b6d113c7e48171824e1d157cf99152140657e6c68a5.e34PaNiLaNuPbO0OaN8Rb3aRbN50; path=/AgriShare-AD-Sys
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/octet-stream; charset=ISO-8859-1


f  
{success: true}
0

我的意图是让{success: true} 最终出现在 iframe 的主体中,在那里我可以从我使用iframe.attachEvent('onLoad', callback) 附加的回调中访问它。回调完成后,我删除了表单和 iframe,以便可以在同一页面上再次运行此代码。这确实有效,但在加载页面后不是第一次

第一次提交该表单时,IE6 向我显示“文件下载”对话框,要求我保存一个名为 ajaxfileupload.xls 的文件。如果我保存它,这个文件包含{success: true},它应该被放入 iframe 中!此外,回调永远不会被调用。

但是,任何后续调用都可以完美运行!响应数据最终在 iframe 文档正文中并执行回调。

我比较了第一次和第二次尝试的数据包跟踪,它们是相同的,所以这一定是浏览器的问题。为什么 IE6 第一次要把响应保存到文件中?

谢谢。

更新:

我刚刚用Tomcat尝试了同样的事情,问题已经消失了。 Tomcat 的响应如下所示:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 May 2011 00:13:32 GMT
Server: Apache-Coyote/1.1

f
{success: true}
0

仍然需要弄清楚为什么它不能在 Oracle 上运行...

【问题讨论】:

    标签: iframe file-upload internet-explorer-6


    【解决方案1】:

    解决方案是将我的 servlet 中的 content-type 显式设置为 text/html

    response.setContentType("text/html");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-19
      • 2014-07-18
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多