IE6で奇妙な動作が発生しています。IE6でIFRAMEの応答がファイルとして解釈される
私は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
は以下を返すサーブレットを指している:
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
私の意図は、私は私がiframe.attachEvent('onLoad', callback)
を使用して取り付けたコールバックからそれへのアクセスを得ることができIFRAMEの体内で終わるために{success: true}
のためでした。コールバックが完了したら、フォームとiframeを削除して、このコードを同じページで再度実行できるようにします。これは実際には動作しますが、ページをロードした後に初めてとなることはありません。
初めてフォームを送信したとき、IE6は私にajaxfileupload.xls
というファイルを保存するように求める「ファイルのダウンロード」ダイアログを表示します。保存すると、このファイルには{success: true}
が含まれています。これはiframeに配置してください。また、コールバックは決して呼び出されません。
その後の呼び出しは完全に機能します。応答データはiframeドキュメント本体で終了し、コールバックが実行されます。
1回目の試行と2回目の試行のパケットトレースを比較しました。これらは同じものなので、ブラウザの問題である必要があります。なぜIE6は最初にレスポンスをファイルに保存したいのですか?
ありがとうございました。
UPDATE:
私は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
ははまだ