我正在尝试使用AJAX请求; 具体来说,我不想在控制台中记录每个更改,以便知道我正在这样做.代码如下:
function loadAJAX() {
ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = readyStateSwitch(ajaxRequest.readyState);
function readyStateSwitch(x) {
switch(x) {
case 0: ajax0(); break;
case 1: ajax1(); break;
case 2: ajax2(); break;
case 3: ajax3(); break;
case 4: ajax4(); break;
default: console.log("no arg"); break;
}
}
function ajax0() {
console.log("0")
}
function ajax1() {
console.log("1")
}
....
ajaxRequest.open("GET", "index.php", true);
ajaxRequest.send();
}
Run Code Online (Sandbox Code Playgroud)
我希望在我的控制台中打印出0-4,但它只返回0(未初始化).有任何想法吗?
您正在调用readyStateSwitch函数立即传递当前Ajax请求readyState(即0)而不是将其作为onreadystatechange处理程序附加.将其更改为:
function loadAJAX() {
function readyStateSwitch() {
console.log(ajaxRequest.readyState);
}
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = readyStateSwitch; //passes a func reference
ajaxRequest.open("GET", "index.php", true);
ajaxRequest.send();
}
Run Code Online (Sandbox Code Playgroud)
PS.添加var为不会意外创建全局变量并简化您的逻辑.