2

我在我的一个 JavaScript 文件中使用以下代码。

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 错误时,我错过了什么?

4

1 回答 1

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);
于 2013-06-28T20:26:45.547 回答