2011-07-09 46 views
3

我的代码如下所示,建议IE可以使用,但只能在Chrome和FF中使用。有没有从另一个域访问url的正确方法。此外,该域名是我自己的,可以允许访问试图访问它的脚本域:如何在Internet Explorer中创建跨域XMLHTTP请求

<script language="javascript" type="text/javascript"> 
function sendRequest(url,callback,postData) { 
    var req = createXMLHTTPObject(); 
    if (!req) return; 
    var method = (postData) ? "POST" : "GET"; 
    req.open(method,url,true); 
    req.setRequestHeader('User-Agent','XMLHTTP/1.0'); 
    if (postData) 
     req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
    req.onreadystatechange = function() { 
     if (req.readyState != 4) return; 
     if (req.status != 200 && req.status != 304) { 
//   alert('HTTP error ' + req.status); 
      return; 
     } 
     callback(req); 
    } 
    if (req.readyState == 4) return; 
    req.send(postData); 
} 

var XMLHttpFactories = [ 
    function() {return new XMLHttpRequest()}, 
    function() {return new ActiveXObject("Msxml2.XMLHTTP")}, 
    function() {return new ActiveXObject("Msxml3.XMLHTTP")}, 
    function() {return new ActiveXObject("Microsoft.XMLHTTP")} 
]; 

function createXMLHTTPObject() { 
    var xmlhttp = false; 
    for (var i=0;i<XMLHttpFactories.length;i++) { 
     try { 
      xmlhttp = XMLHttpFactories[i](); 
     } 
     catch (e) { 
      continue; 
     } 
     break; 
    } 
    return xmlhttp; 
} 

function handleRequest(req) { 
    var MyResponse = req.responseText; 
    document.open(); 
    document.write(MyResponse); 
    document.close(); 
} 

sendRequest("http://anotherdomain.com/urlwithcontentneeded.php",handleRequest); 


</script> 
+0

你确定它的工作在Chrome和Firefox?它不应该因为相同的原产地政策。 http://en.wikipedia.org/wiki/Same_origin_policy – Dan

+0

该域上的脚本具有Access-Control-Allow-Origin * - 是的Chrome和FF都可以工作,包括Safari。 – InnateDev

回答

2

IE不suppoort这样跨域请求,但确实有使用XDomainRequest对象,而不是一种方法,请参阅http://msdn.microsoft.com/en-us/library/cc288060(v=vs.85).aspx

它虽然工作在大致相同的方式,是的这是一个痛苦有两种方法可以做到在不同的浏览器

+0

以下博客文章提供了一个createCORSRequest()函数,可在支持CORS的所有浏览器上使用:http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-资源共享/ – monsur