私は、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が必要ではないと思っていたので、私はHTMLを含んでいませんでしたが、それが助けになるかどうか尋ねてください、そして私はそれを掲示します!)私はついにこれをクロームで実行しています。
いいえ運がよろしいですか?これが理由だと思います – haakym
@haakym更新を参照してください。 –
それを釘付け!私はonsubmit = "byObserver()"と書いていました。少なくとも、仮想のhi5があなたのところに来ると考えてください。 – haakym