【发布时间】: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