XMLHttpRequest ReadyState始终未定义

时间:2012-11-29 23:22:25

标签: php javascript html ajax

我正在学习w3schools的PHP / AJAX教程,而且我在第一个方面遇到了一些障碍。每次调用此函数时,readystate始终未定义。

function showHint(str) {
    if (str.length == 0) {
        document.getElementById("txtHint").innerHTML = "";
            return;
        }

        var xmlhttp;

        if (window.XMLHttpRequest) {
            console.log("Using XMLHttpRequest");
            xmlhttp = new XMLHttpRequest();
        }
        else {
            console.log("Using ActiveXObject");
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }

        xmlhttp.open("GET", "gethint.php?q=" + str, true);
        xmlhttp.send();

        xmlhttp.onreadystatechange = function() {
        console.log(xmlhttp.readystate);

        if (xmlhttp.readystate == 4 && xmlhttp.status == 200) {
            console.log(xmlhttp.status);
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    }
}

如果我更改此行:

if (xmlhttp.readystate == 4 && xmlhttp.status == 200) { ...

到此(通过拼写错误):

if (xmlhttp.readystate = 4 && xmlhttp.status == 200) { ...

然后它有效,但感觉有点像#34;魔法发生在这里"要写这样的代码的事情。

1 个答案:

答案 0 :(得分:15)

JS区分大小写。您需要检查readyState属性,而不是readystate属性。

    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        console.log(xmlhttp.status);
        document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
    }