3

次のコードを使用して、xDomain Request を使用して IE でクロス ドメイン jquery ajax リクエストを作成しました。

var xdr;  
 var URL=parentDomain+"/chat/getmessagesservlet";

 if (jQuery.browser.msie && window.XDomainRequest) {  

   // Use Microsoft XDR
   var xdr = new XDomainRequest();
    xdr.open("POST", URL + '?to='+chatboxtitle+'&yourName='+myName+'&chatBoxIndex='+tabIncr);
    xdr.onload = function () {
   var dom  = new ActiveXObject("Microsoft.XMLDOM");
   dom.async = false;
  JSON = $.parseJSON(xdr.responseText); 
   if (JSON == null || typeof (JSON) == 'undefined') {
    JSON = $.parseJSON(data.firstChild.textContent);   
   }

    processData(JSON); // internal function
   }; 

   xdr.onerror = function() {
     _result = false;    
    };
   xdr.send();

    } else {
    $.ajax({ 
      type: 'POST', 
       url: URL,   
          processData: true,
          data: {'to':chatboxtitle,'yourName':myName,'chatBoxIndex':tabIncr}, 
           dataType: "json",
          async: false,
          success: function (data) {
            processData(data);   
           }
});

}'

また、次のようにサーバー側でヘッダーを設定します。

response.setHeader("Access-Control-Allow-Origin","*");   
response.setHeader("Content-Type","text/plain");
response.setHeader("Access-Control-Allow-Methods"," GET, POST");
response.setHeader("Access-Control-Allow-Headers", "Content-Type"); 

しかし、IE8 & IE9 では動作しません。ResponseText は null を返すか、空です。私はjQueryを使用していることを見てきました

.ajaxTransport( dataType, handler(options, originalOptions, jqXHR)

また

.ajaxPrefilter( [dataTypes ], handler(options, originalOptions, jqXHR) )

クロス ドメイン リクエストを作成することは可能ですが、コードでこれを使用する方法がわかりません。options と originalOptions パラメータで渡される値は何ですか? この問題を解決するためのガイダンスを教えてください。

4

1 に答える 1

0

これは役立つかもしれません:

xdr.onprogress = function () { }; //Needed to save IE9 from melting.
于 2013-02-04T13:09:27.783 に答える