• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:responseTextを使っての書き換えを複数行いたい)

responseTextを使っての書き換えを複数行いたい

このQ&Aのポイント
  • JavascriptからPHPを呼び出し、その結果でHTMLを書き換える処理を行っています。しかし、2箇所同時に書き換えるため1つのfunctionの中で2回PHPを呼んでも、1回目の結果しか画面に反映されません。これはなぜでしょうか?
  • 以下のソースコードでは、reqとreq2という2つのXMLHttpRequestオブジェクトを使用し、それぞれのPHPファイルを呼び出しています。しかし、hogeとhoge2という2つの要素に対してinnerHTMLを設定しても、1回目の結果しか表示されません。
  • この問題の原因は、XMLHttpRequestが非同期的に動作するためです。即座に結果を取得せず、非同期に処理されるため、2回目の呼び出しの結果が表示されないことがあります。解決策としては、非同期処理を同期処理に変更するか、コールバック関数を使用して処理の順序を制御することが考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

明確に原因は分かりませんが、あまり考えても出来ない事は出来ない、と割り切らないとはまりっぱなしになりますよ。  とりあえず、こんな感じに書き換えたらどうなんでしょう。 function hoehoe(hoge){ req = new XMLHttpRequest(); req.open("POST",hoge+".php",true); document.getElementById(hoge).innerHTML = req.responseText; } function hoehoe2(){ hoehoe("hoge"); hoehoe("hoge2"); } # OperaとIEとSafariとFirefoxで挙動が違ったりする場合も、そういうもの、として割り切らないとうまくいきませんからね。

関連するQ&A