2011-05-28 9 views
0

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 

はまだ

答えて

1

...それはしかしオラクルに取り組んでいない理由を把握するためのソリューションを必要とし、明示的にtext/htmlに私のサーブレットでcontent-typeを設定することでした。

response.setContentType("text/html"); 
関連する問題