ユーザーから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で実行していることを追加します。