我正在编写一小段代码,该代码通过 html 表单从用户那里获取输入,然后使用XMLHttpRequest从服务器(在本地运行)检索信息(以 xml 格式) ,一旦我得到信息,我将其输出到使用列表中我为onreadystatechange编写的方法。但是,一旦将列表写入页面,它会自动刷新页面并且列表消失。我完全不知道为什么要这样做?!我已经设法使用window.onbeforeunload强制停止页面刷新并停止刷新,但我不禁认为有更好的方法解决这个问题,我一定做错了什么。我的代码如下:
var xmlhttp=null;
函数 byObserver(){
var a = document.forms["byObserverForm"]["observerName"].value;
a = encodeURIComponent(a);
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp) {
xmlhttp.onreadystatechange = onReadyStateByObserver;
xmlhttp.open("GET","http://localhost:8004/birdobs/observer/" + a, false);
xmlhttp.send();
}
return false;
}
function onReadyStateByObserver(){
if (xmlhttp.readyState == 4){
if (xmlhttp.status == 200){
var xmlDoc = xmlhttp.responseXML;
var observations = xmlDoc.getElementsByTagName("observation");
if (observations.length != 0){
// output into unordered list
var f = document.createDocumentFragment();
var e = document.createElement("ul");
f.appendChild(e);
var ul = f.firstChild;
for (i = 0; i<observations.length; i++) {
var li = document.createElement("li");
var te = document.createTextNode(observations[i].getAttribute("observer"));
li.appendChild(te);
ul.appendChild(li);
} // end for
document.getElementById("content").appendChild(f);
window.onbeforeunload = function(){
return "Refresh";
}
}
}
}
//have also tried return false here
}
任何帮助将不胜感激,因为我花了很长时间试图解决这个问题,非常感谢提前!(我没有包含 HTML,因为我认为不需要它,但请询问它是否有帮助,我会发布它!)我最后会添加我在 chrome 中运行它。