这是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
函数似乎根本没有被执行。
我做错了什么?