我正在关注w3schools上的PHP/AJAX教程,并且我在一行中遇到了一些障碍。每次我调用这个函数时,readystate总是未定义的。XMLHttpRequest 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) { ...
然后,它的工作原理,但像 “奇迹发生在这里” 感觉那种要编写这样的代码。
'xmlhttp.readystate = 4'(单等号,分配)分配'4'到'.readystate'属性和是取值为'4'的表达,这是一种'truthy'值并因此通过if检查。所以它可能是'if(true && xmlhttp.status == 200)'或者只是'if(xmlhttp.status == 200)' – Esailija