8

XDomainRequest (IE8) を使用して json を返すサービスを非同期呼び出ししようとしています。問題は、常にエラーが発生することです (onerror イベントが発生し、responseText は常に null です)。フィドラーを使用してサービスの応答を確認していますが、正しいようです (json オブジェクトが返されていることがわかります)。これは XDomainRequest を使用する場合に IE8 でのみ発生し、JQuery で実装された同じ機能が正常に動作します。

手がかりをいただければ幸いです。ありがとう!

PS: これは私の JavaScript コードです:

.....
  if (jQuery.browser.msie && window.XDomainRequest) {
    //Use Microsoft XDR
    var xdr = new XDomainRequest();
    xdr.open("post", url);
    xdr.onload = function () {
       alert("Loading");
       alert(xdr.responseText);
    };
    xdr.onsuccess = function() {
       alert("Success!");
       alert(xdr.responseText);
    };
    xdr.onerror = function() {
       alert("Error!");
       alert(xdr.responseText);
    };
    xdr.onprogress = function() {
       alert("Progress");
       alert(xdr.responseText);
    };
    xdr.timeout = 1000;
    xdr.send("data: " + escape(data));
    var response = xdr.responseText;
 } else .....
4

4 に答える 4

8

サービスが要求元の URL と一致するAccess-Control-Allow-Originヘッダーを送信していることは確かですか?

于 2011-01-19T21:06:25.203 に答える
7

XDomainRequest は「text/plain」のみをサポートするため、問題は送信されたコンテンツ タイプにある可能性があります。

参照: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

乾杯、

アンドレ・ペドロソ

于 2011-02-09T17:40:29.587 に答える
4

1 年前の投稿、あなたはまだ GiaNU にいますか?! xdr.onsuccess を呼び出していますが、そのメソッドは存在しないと思います。xdr.onload は機能し、jQuery の AJAX "success" 関数と同等のようです。

この X-Domain の機能は非常に新しいものですが、現在 MS から入手できる非常に優れた作業モデルがあります: AJAX - クロスドメイン リクエスト (XDR) の紹介

xdr.ontimeout 私は何かをすることができませんが、まだ必要性を見つけていません :) 最初に jQuery を使用して実行し、現在は ie9 を使用して MS の投稿に感謝しています。

XDR は現在のアプリケーションのタイミングに問題があり、それを処理するためにタイムアウトを使用しています:

xdr.onload = setTimeout( function(){ doIt( xdr.responseText ), 2000});
于 2012-03-27T23:33:44.590 に答える