我正在尝试让 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();
}
我希望它在我的控制台中打印出 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();
}
附言。添加了 var
以防止意外创建全局变量并稍微简化您的逻辑。
关于javascript - AJAX onreadystatechange 不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918823/