gpt4 book ai didi

javascript - AJAX onreadystatechange 不调用

转载 作者:行者123 更新时间:2023-11-30 07:41:10 27 4
gpt4 key购买 nike

我正在尝试让 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();
}

Demo

附言。添加了 var 以防止意外创建全局变量并稍微简化您的逻辑。

关于javascript - AJAX onreadystatechange 不调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16918823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com