2014-02-16 23 views
1

跨域XMLHttpRequest适用于Firefox,Safari,Chrome和IE11。跨域XMLHttpRequest不适用于旧版Internet Explorer版本(访问被拒绝)

当我试图测试网站时,IE9在IETester上崩溃。

在IE8的JavaScript错误说,在第36行 “访问被拒绝”,焦炭3.

在IE7的JavaScript错误说: “访问被拒绝” 的第37行,字符3

在IE6在JavaScript错误说,在第37行,字符3

拒绝“权限”一些JavaScript代码:

var xmlhttp; 
    if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     alert('main'); 
    } else { // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     alert('ie6 etc'); 
    } 
    xmlhttp.open("GET",URL,true); // <-- Line 36 
    xmlhttp.send();     // <-- Line 37 
    xmlhttp.onreadystatechange = function(){ 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
      document.getElementById(wrap_id).innerHTML = xmlhttp.responseText; 
     } 
    } 

这是它被请求php文件:

<?php 
    header("Access-Control-Allow-Origin: *"); 

我想得到它在IE8等工作,谢谢。

+0

旧版本的IE无法识别CORS标头。 – Pointy

+0

有没有其他的JavaScript从另一个网站获取innerHTML的方式? –

+0

浏览器兼容性:http://caniuse.com/cors – Ian

回答

0

这个工程....

if (window.XDomainRequest) { 
    var xdr = new XDomainRequest(); 
    if (xdr) { 
     xdr.onload=function() { 
      element.innerHTML = xdr.responseText; 
     } 
     xdr.open("get", URL, true); 
     xdr.send(); 
    } 
} 
else { 
    var xmlhttp; 
0

这里是JavaScript代码,这是我用来解决IE9,IE10问题使用XMLHttpRequest同时加载和解析XML。

//New Flag for XDomainRequest is being used or Not 
var isXDomain = false; 
//Establish Reference to script 
var self = this; 
//Set Your XML Path here 
var xml_link = ""; 
//XML Object which comes after loading XML successfully 
var objXml; 

function startXMLLoading() { 
    //Create New Request 
    if (window.XDomainRequest) { 
     //This Code runs in IE9, IE10, IE11 
     xhttp = new XDomainRequest(); 
     isXDomain = true; 
     //XDomainRequest runs Synchronously, So onload function is necessary 
     xhttp.onload = function() { 
      var parser = new DOMParser(); 
      var xmlDoc = parser.parseFromString(xhttp.responseText, "text/xml"); 
      objXml = xmlDoc; 
      //Handle XML Response 
      handleXML(objXml); 
     }; 
     xhttp.onerror = function() {}; 
     xhttp.onprogress = function() {}; 
     xhttp.open("get", xml_link); 
     xhttp.send(); 

    } else if (window.XMLHttpRequest) { 
     //Runs in advanced browsers like Chrome, Firefox, Safari 
     xhttp = new XMLHttpRequest(); 
    } else { 
     xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    if (!isXDomain) { 
     try { 
      //Open Get Request , Synchronous 
      xhttp.open("GET", xml_link, true); 
      //Callback 
      xhttp.onreadystatechange = function() { 
        if (xhttp.readyState == 4) { 
         //Establish Reference to XML Response 
         objXml = xhttp.responseXML; 
         //Handle XML Response 
         handleXML(objXml); 
        } 
       } 
       //Send Request 
       xhttp.send(); 
     } catch (e) { 
      console.log("err : " + e); 
     } 
    } 
} 

//function for parsing XML object 
function handleXML(sXml) { 
    //Use Following Syntax to get values of XML Element and Attributes. 
    //Only Following Syntax works across all Browsers including IE9, IE10, IE11 
    //Syntax like sXml.getElementsByTagName("dataset")[0].children[0].innerHTML doesnot work in IE9,10,11 Browsers 
    //sXml.getElementsByTagName("dataset")[0].childNodes[0].nodeValue; 
    //sXml.getElementsByTagName("dataset")[0].childNodes[0].getAttribute('voteField');  
} 

//window.onload = function(){ 
startXMLLoading(); 
//} 
相关问题