サーバーへの実際のEXTJSバージョンでファイルアップロードを作成しました。ファイルが正常にアップロードされると、バックエンドによって json 応答が作成され、フロントエンドで処理されます。Chrome と Firefox では正常に動作しますが、IE では常に json 応答をファイルとしてダウンロードし、プロセスを中断するため、IE でこれを防ぐ方法はありますか?
ありがとう
サーバーへの実際のEXTJSバージョンでファイルアップロードを作成しました。ファイルが正常にアップロードされると、バックエンドによって json 応答が作成され、フロントエンドで処理されます。Chrome と Firefox では正常に動作しますが、IE では常に json 応答をファイルとしてダウンロードし、プロセスを中断するため、IE でこれを防ぐ方法はありますか?
ありがとう
だから私は解決策を見つけました、問題はContent-Typeです。通常、私は json 応答を使用していますが、IE8 と IE9 では問題が発生しているため、この問題を解決するには「text/html」コンテンツ タイプを送信する必要があります。
MartinMBの答えは本質的に正しいです。この回答は、もう少し背景を提供することを目的としています。
Ext JSでは、ファイルのアップロードは通常の「Ajax」技術を使用して実行されません。つまり、XMLHttpRequests を使用して実行されません。代わりに、すべてのフィールドを含む非表示要素が一時的に作成され、そのターゲット セットを使用して送信され、動的に生成された非表示要素が参照されます。非表示要素はドキュメントに挿入されますが、戻りデータが収集された後に削除されます。
サーバーの応答はブラウザーによって解析され、IFRAME のドキュメントが作成されます。サーバーが戻りオブジェクトを送信するために JSON を使用している場合、ブラウザーにテキストを変更せずにドキュメント本文に挿入するように指示するために、Content-Type
ヘッダーを に設定する必要があります。text/html
Chrome、FF、IE10 以降は、応答ヘッダーにContent-Type
=が表示されたときにのみ実行します。application/json
ただし、IE8 および IE9 に対してこれを行うと、サーバーがファイルのアップロードから応答すると、次のようなメッセージが表示されます。「このドキュメントを開くか保存しますか?」
したがって、IE8 および IE9 でこれを修正するには、単に行うだけで問題Content-Type
ありtext/html
ません。最新のブラウザーはまったく同じように応答するため、そのソリューションで何かが壊れることはありません。