2

我在我的一個JavaScript文件中使用了以下代碼。XDomainRequest open(「get」,url)在IE中給出拒絕訪問錯誤

xhr = new XMLHttpRequest(); 
xhr.open("GET", dest, true); // dest is the URL 
xhr.onreadystatechange = checkData; 
xhr.send(null); 

但是,當我在IE中運行腳本時,它給我下面的錯誤。

SCRIPT5:訪問被拒絕。

然後我想檢查瀏覽器類型,併爲下面的IE執行一個單獨的代碼。

if(isIE){ 
    xhr = new XDomainRequest(); 
    xhr.onerror = function (res) { alert("error: " + res); }; 
    xhr.ontimeout = function (res) { alert("timeout: " + res); }; 
    xhr.onprogress = function (res) { alert("on progress: " + res); }; 
    xhr.onload = function (res) { alert("on load: " + res); }; 
    xhr.timeout = 5000; 
    xhr.open("get", dest); // Error line 
    xhr.send(json); 
} 

但又把它給我,我已經使用下面的代碼

xhr.open("get", dest); 

在我想打電話給checkData功能就像我已經與其他瀏覽器下面做結束了同樣的錯誤。

xhr.onreadystatechange = checkData; 

我在那裏錯過了IE控制檯的Access Denied錯誤?

+0

這一塊,它關係到你的問題:http://stackoverflow.com/questions/22098259/access-denied-in-ie-10-and -11-當-Ajax的目標是,本地主機 – Savaratkar

回答

0

請嘗試以下..它在IE8和IE9中爲我工作。

if ($.browser.msie && window.XDomainRequest) { 
       // Use Microsoft XDR 
       var xdr = new XDomainRequest(); 
       xdr.open("get", serviceURL+'GetItem/50000'); 
       xdr.onload = function() { 
        //parse response as JSON 
        var response1 = $.parseJSON(xdr.responseText); 
        if (response1 == null || typeof(response1) == 'undefined') { 
         var result = $.parseJSON(data.firstChild.textContent); 
         alert(result); 
        } else { 
         $(response1.ResultData).each(function(i, item) { 
          alert(item.BorrName.toString()); 
         }); 
        } 
       }; 
       xdr.send(); 
       xdr.onerror = function(errormsg) { 
          alert('in error'); 
       }; 
      } 

服務看起來像下面的檢查

[OperationContract] 
     [WebGet(UriTemplate = "GetItem/{itemnumber}", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] 
     ItemEntity GetItem(string itemnumber);