0
xmlHttp = new XMLHttpRequest(); 
xmlHttp.open( "GET", "myurlhere.php", true );
xmlHttp.send();
var display = document.getElementById("display");
display.innerHTML = xmlHttp.response;

これは私のコードです。このコードは、ボタンをクリックして実行される関数の一部です。AJAX 要求は実行されますが、innerHTML は更新されません。ここが本当に奇妙になるところです。ブラウザで JS コンソールに移動し、display.innerHTML = xmlHttp.response;. その後、更新します。display.innerHTML = xmlHttp.response;onclickイベントとして2番目のボタンを作成します...その後、それが発生します。しかし、最初のボタンの onclick イベントの 2 行目に入れるとどうなるでしょうか。運がない。この交絡問題を解決するにはどうすればよいですか?

4

2 に答える 2

2

これは、xmlHttp が非同期であるためです。応答が到着したに変更を行う必要があります。jsコンソールに入力するのにかかる時間にどれが含まれていますか。

onload イベントで内部 html を設定する必要があります。

xmlHttp = new XMLHttpRequest(); 
xmlHttp.open( "GET", "myurlhere.php", true );
xmlHttp.onload = function(e) {
  var display = document.getElementById("display");
  display.innerHTML = xmlHttp.response;  
}
xmlHttp.send();
于 2013-05-21T01:36:25.453 に答える
1

true非同期で送信するために渡しています。これは、応答を待っている間に残りのコードが実行されていることを意味します。つまり、実際にサーバーからデータを取得する前に、html にデータを挿入しようとしています。したがって、そのデータを取得したら、コールバックを起動する必要があります。

xmlHttp.onload=function(e) {
    document.getElementById('display').innerHTML=xmlHttp.responseText;  
}
于 2013-05-21T01:55:30.627 に答える