CORS请求不起作用

时间:2014-05-01 18:01:02

标签: ajax cors

这是this question的一个后续问题,我之前曾问过。该问题被标记为this question的副本,因此我查看了那里的答案,特别是this one。我尝试将我原来的AJAX代码调整到该答案中给出的内容,但它不起作用。

这是我的原始代码:

var xmlhttp;
if ( window.XMLHttpRequest ) {
    xmlhttp = new XMLHttpRequest();
} else {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}

function writeWisdom() {
    xmlhttp.open("GET", "wisdom.php");
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("wisdom").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.send(null);
}

和我添加CORSRequest之后的代码:

function createCORSRequest(method, url){
    var xmlhttp;
    if ( window.XMLHttpRequest ) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }

    if ("withCredentials" in xmlhttp){
        xmlhttp.open(method, url, true);
    } else if (typeof XDomainRequest != "undefined"){
        xmlhttp = new XDomainRequest();
        xmlhttp.open(method, url);
    } else {
        xmlhttp = null;
    }
    return xmlhttp;
}

function writeWisdom() {
    var request = createCORSRequest("GET", "wisdom.php");
    if (request) {
        request.onreadystatechange = function() {
            if (request.readyState == 4 && request.status == 200) {
                document.getElementById("wisdom").innerHTML = request.responseText;
            }
        }
        request.send(null);
    }
}

我进入调试器(我不熟悉,所以请耐心等待)并检查if (request)确实返回true。但是在我的原始代码中,onreadystatechange函数被执行(状态为404),在更改的代码中,onreadystatechange函数似乎根本没有被执行。

我做错了什么?

0 个答案:

没有答案