我正在学习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;魔法发生在这里"要写这样的代码的事情。
答案 0 :(得分:15)
JS区分大小写。您需要检查readyState
属性,而不是readystate
属性。
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
console.log(xmlhttp.status);
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}