Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Internet Explorer中创建跨域XMLHTTPRequests_Javascript_Internet Explorer_Xmlhttprequest - Fatal编程技术网

Javascript 如何在Internet Explorer中创建跨域XMLHTTPRequests

Javascript 如何在Internet Explorer中创建跨域XMLHTTPRequests,javascript,internet-explorer,xmlhttprequest,Javascript,Internet Explorer,Xmlhttprequest,我的代码看起来像这样,建议IE使用,但它只在Chrome和FF中使用。是否有从其他域访问url的正确方法。此外,该域是我拥有的域,可以允许访问试图访问它的脚本: <script language="javascript" type="text/javascript"> function sendRequest(url,callback,postData) { var req = createXMLHTTPObject(); if (!req) return;

我的代码看起来像这样,建议IE使用,但它只在Chrome和FF中使用。是否有从其他域访问url的正确方法。此外,该域是我拥有的域,可以允许访问试图访问它的脚本:

<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>

函数sendRequest(url、回调、postData){
var req=createXMLHTTPObject();
如果(!req)返回;
var方法=(postData)?“POST”:“GET”;
请求打开(方法、url、true);
请求setRequestHeader('User-Agent','XMLHTTP/1.0');
if(postData)
req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
req.onreadystatechange=函数(){
如果(req.readyState!=4)返回;
如果(请求状态!=200和请求状态!=304){
//警报(“HTTP错误”+请求状态);
返回;
}
回调(req);
}
if(req.readyState==4)返回;
请求发送(postData);
}
var xmlHttpFactorys=[
函数(){返回新的XMLHttpRequest()},
函数(){返回新的ActiveXObject(“Msxml2.XMLHTTP”)},
函数(){返回新的ActiveXObject(“Msxml3.XMLHTTP”)},
函数(){返回新的ActiveXObject(“Microsoft.XMLHTTP”)}
];
函数createXMLHTTPObject(){
var xmlhttp=false;

对于(var i=0;iIE不以这种方式支持跨域请求,但确实有一种方法使用XDomainRequest对象,请参阅


不过,它的工作方式基本相同,是的,这是一个难题。在不同的浏览器中有两种方法可以做到这一点

你确定它在Chrome和Firefox中工作吗?不应该,因为相同的源代码策略。域上的脚本具有访问控制允许源代码*-是的,Chrome和FF都工作,包括Safari。下面的博文一个createCORSRequest()函数,可在所有支持CORS的浏览器上运行: