2012-02-14 12 views
7

ターゲットがiframeであるフォームがあります。Internet explorerがXMLレスポンスを傍受する

フォームを送信するとき、レスポンスはXMLであり、レスポンスを分析するJavascriptがあります。

IEで動作しているときに、IEが応答を傍受してRSSフィードとして扱うことに気がつきました。私のコードは応答を受信しません。 RSSフィードを無効にすると(インターネットオプションの[コンテンツ]タブから)、すべて正常に機能します。

レスポンスのコンテンツタイプを "text/xml"に設定しました。 charset = UTF-8 "でも動作しません。

回避策はありますか?

+1

こんにちは、IEのような奇妙なことについて読んでいます。 – Oliver

答えて

2

この場合、iframeを使用しないでください。 IEのように聞こえるのは、httpの応答をキャッチし、それを読んでいるようです。あなたが情報を取得するためにAJAX呼び出しをしていない理由はありますか?それはあなたがとにかくレスポンスを処理するためにJavaScriptに頼っているように聞こえるので、私はXMLHttpRequestオブジェクトを使用すると、あなたのために良いだろうと思うだろう:http://www.w3.org/TR/XMLHttpRequest/

それはあまりにも複雑だ場合は、jQueryのようなライブラリーに見て:ありhttp://jquery.com/ AJAX呼び出しを行い、応答を処理するための組み込み関数(はるかに単純な関数)。

これを拡張するには、フォームのサブミット機能をJS関数にバインドし(またはjQueryを使用して)フォームデータを取得し、AJAXリクエストで送信し、レスポンスを処理します。 jQueryには、ページ上のフォームデータをajax()関数で使用可能な情報に変換してサーバーに送信するためのserialize()関数が組み込まれています。 XMLHttpRequestオブジェクトに精通していない場合は、このタスクのためにjQueryのようなライブラリを使用することを強くお勧めします。

0

はい、また、ファイルには、ヘッダーを使用して正しいContent-処分と出力であることを確認してIEが「response.xml」ではなく「response.php」またはそのようないくつかの...

を取得することを行います'Content-Disposition:添付ファイル。ファイル名= "response.xml" '

+0

実際には、添付ファイルの処分はクロムの中で時々変わってしまうので、ユーザーエージェントの情報を読んで、IEの添付ファイルだけを確実に実行してください。他のブラウザは通常、コンテンツタイプが正しく設定されている限り、アクセスに使用されたURLに関係なく、応答を正しく処理します。 – Brian

1

OK、問題が見つかりました... 私の応答XMLにはFEEDBACKタグが含まれています。 IEはこれらのタグをRSSフィードとして扱います。タグ名をFDBACKに変更すると、この問題は解決します...

MS、これはなぜ文書化されていませんか?

関連する問題