所以我在尝试重用XMLHttp
请求对象时遇到了问题。我正在尝试将AJAX纳入网站!
请参阅下面的代码:
var XMLHttp = createXMLHttpRequestObject();
function createXMLHttpRequestObject() {
var xmlHTTP;
//First to deal with Internet Explorer >:(
if (window.ActiveXObject){
try {
xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {
xmlHTTP = false;
}
} else {
try {
xmlHTTP = new XMLHttpRequest();
}
catch (e) {
xmlHTTP = false;
}
}
if (!xmlHTTP)
alert("Oops! Someone just unplugged the internet!");
else
return xmlHTTP;
}// XMLHttpRequest
function getAboutMe() {
if (XMLHttp.readyState == 0 || XMLHttp.readyState == 4) {
XMLHttp.open("GET", "http://repairiphonesuk.com/rachael/AJAX/getAboutMe.php", true);
XMLHttp.onreadystatechange = handleServerResponse('AboutMe');
XMLHttp.send();
} else {
setTimeout(getAboutMe(), 1000);
alert("no");
}
}
function getHome() {
if (XMLHttp.readyState == 0 || XMLHttp.readyState == 4) {
XMLHttp.open("GET", "http://repairiphonesuk.com/rachael/AJAX/getHome.php", true);
XMLHttp.onreadystatechange = handleServerResponse('home');
XMLHttp.send();
} else {
setTimeout(getHome(), 1000);
alert("no");
}
}
function handleServerResponse(from) {
if (XMLHttp.readyState == 4 && XMLHttp.status == 200) {
document.getElementById("displayContent").innerHTML = XMLHttp.responseText;
if (from === 'home') {
document.getElementById('displayContent').style.backgroundColor=transparent;
}
} else if (XMLHttp.status = 404) {
}
}
将getHome()
函数和参数删除到句柄请求时,它可以正常工作!我错过了一些明显的东西吗?
答案 0 :(得分:0)
onreadystatechange
接受一个函数赋值,你正在做的是调用一个函数并将返回值分配给onreadystatechange
。通过将代码包装在匿名函数中来解决此问题。
XMLHttp.onreadystatechange = function (){handleServerResponse('home')};
setTimeout
将一个函数作为第一个参数,你正在做的是调用函数,与onreadystatechange
基本相同,因为getHome
没有接受任何参数只是通过了功能本身
setTimeout(getHome, 1000);