javascript - AJAX onreadystatechange 不调用

标签 javascript ajax

我正在尝试让 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/

相关文章:

php - 使用php上传文件并在mysql列中插入其路径

javascript - 主干项目 View 需要将 HTML 放入选项卡中

javascript - 带回调的 useEffect 不更新状态

javascript - 使用 Javascript 或 jQuery 获取表单输入以进行背景颜色操作

javascript - AJAX:检查字符串是否为 JSON?

javascript - 使用 XML 文档中的内容更新链接文本

javascript - MVC4 - Ajax 请求 Image ByteArray 不起作用

javascript - 如何在 D3 中使用交叉过滤器进行过滤

javascript - 如果 JavaScript 关闭或禁用,允许浏览器回退到链接的最佳方法是什么?

jquery - 如何结合每个然后