2011-07-09 45 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