2012-03-13 8 views
0

私はフォームを投稿し、単純なHTMLを使用してターゲットiframeにサーバー応答を受け取ろうとしています。私はこれまで持っていることは次のとおりです。IE9でポストが正常に動作しない

<iframe name="iframe" id="iframe" onload="loaded()" style="display:none"></iframe> 

私が持っているより:

<form id="form" action="/rpc/test" method="post" target="iframe"> 
    <!--....... form input ............--> 
    <input type="submit" class="button" name="Test" id="Test" value="Test"> 
</form> 

、最終的に応答を処理する必要があり、私は機能がロードされているスクリプトタグ内:

<script language="javascript" type="text/javascript"> 
function loaded() { 
    var ifr = document.getElementById('iframe'); 
    var dc = ifr.contentWindow || ifr.contentDocument; 
    if (dc.document) { 
     dc = dc.document; 
    } 
    var rsp = dc.documentElement.innerText || dc.documentElement.textContent; 
    var obj = JSON.parse(rsp); 
    if (obj && obj.success === true) { 
     // DO very important things 
     return; 
    } 
} 
</script> 

をこれは、IE9を除くすべての可能なブラウザで絶対にうまく動作します(IEのバージョンが低いとテストしません)。 IE9では、応答は正しいサーバー応答を含むファイルです。 IE9は私に "あなたはオープンしたいのですか.....保存しますか?"

私のサーバーはnodejsです。私は応答を設定します。

resposnse.writeHead(200, { 'Content-Type': 'application/json' }); 

Iは、Content-Typeは 'アプリケーション/ jsonの'

任意のアイデアであることをIE9ネットワークモニタで追跡することができますか?

+0

を助ける最初

if(request.method==='OPTIONS') response.send(200); 

希望をクロム。 目的のURLをcURLまたはWGETして、サーバーが元に戻したヘッダーを印刷します。 node.jsをサーバーとして使用しているのですか、またはnginxのようなものが前面にありますか? –

答えて

0

ファイルのMIMEタイプが問題であるようです。サーバーは、実際にここでアプリケーション/ JSON出力

は、いくつかの類似した記事です返すことを確認してください:あなたは確認して戻ってきているサーバー側で

+0

サーバレスポンスヘッダのContent-Typeは 'application/json'です。それはクロムとFF – user732456

+0

とちょうどうまく処理されますこれはhttp://stackoverflow.com/questions/5388893/ie9-json-data-do-you-want-to-open-or-save-thisの同様の投稿と思われます-fileコンテンツタイプを正しく設定していますか? –

+0

私のサーバはnodejsサーバであり、res.writeHead(200、{'Content-Type': 'application/json'})を正しく設定します。私はresに変更しようとしました。writeHead(200、{'Content-Type': 'application/json; charset = UTF-8'}); ie9ネットワークコンソールでは、私は、リサーチのContent-typeが 'application/json'であり、 'application/json'に正しく変更されていることがわかります。 chardset = utf-8 – user732456

0

そのコンテンツタイプはJSONに設定されています。 .NETで

、それが何かのように、この場合、

result.ContentEncoding = System.Text.Encoding.UTF8; 
result.ContentType = "application/json; charset=UTF-8 
+0

他の答えもコメントしましたが、content-typeは本当に 'application/json'です。そして私が質問で言ったように、ChromeとFFで正しく処理されています。 – user732456

0

を意志、あなたはクロム世話をする必要があるか、FirefoxはIE9は異なるポストの要求をしたか、8

クロムは最初のOPTION要求を送信しますテスト接続は、POSTリクエストを送信しますが、IEはこれこれの世話をしていなかった、あなたは以下の

response.header("Content-Type", "application/json;charset=utf-8"); 
response.header("Access-Control-Allow-Methods","POST,GET,OPTIONS"); 
response.send("try"); 

のような応答に多くの設定を試してみて、あなたがRESPべきで世話をする必要がありますオンセこの情報は、それらは多くの場合、インテリジェントタイプの認識を持っているので、それは、クローム/ Firefoxの上で動作することがあります