【发布时间】:2012-01-22 15:56:12
【问题描述】:
似乎是一个常见错误,但我发现的所有解决方案都没有被证明是成功的(将 & 替换为 & 就是其中之一)。我有一个简单的 Javascript (AJAX),其中包括几个双 if 语句。该脚本在 Chrome 和 Firefox 中都可以正常工作,但在 IE9 中却不行,它在与 Netbeans 相同的行上报告错误(实体名称必须紧跟在 '&' (...) 之后)。
希望这里的人能发现错误或提供我应该看的地方的线索。
function getNames(str) {
var xmlhttp;
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
}
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
// The line below is what produces the error.
if (xmlhttp.status == 200 && xmlhttp.readyState == 4) {
var arr = xmlhttp.responseText.split(",");
var ul = document.getElementById("names");
var li = document.createElement("li");
if (ul.hasChildNodes()) {
while (ul.childNodes.length >= 1) {
ul.removeChild(ul.firstChild);
}
}
for (var i = 0; i < arr.length; i++) {
if (arr[i] != ":@") {
var li = document.createElement("li");
li.innerHTML = newListItem = arr[i];
ul.insertBefore(li, ul.getElementsByTagName("li")[0]);
}
}
}
}
xmlhttp.open("GET", "./ext/get_names.php?q=" + str, true);
xmlhttp.send();
}
【问题讨论】:
-
我认为您需要将
if (xmlhttp.status == 200 &amp;&amp; xmlhttp.readyState == 4)替换为if (xmlhttp.status == 200 &amp;&amp; xmlhttp.readyState == 4) -
是的,我试过了。这完全破坏了所有浏览器中的脚本。
-
然后尝试嵌套它:
if (xmlhttp.status == 200) { if (xmlhttp.readyState == 4) {
标签: javascript ajax netbeans