innerHTMLで表示完了後に、Ajaxにて通信を実施
お世話になります。
現在、PHP + Ajax + MySQLでWebアプリケーションを作成中です。
読み込みが既に完了した画面から、
あるイベントにてAjax + PHPにてMySQLからデータを取得し、
その結果を受け取り、innerHTMLにて動的に結果を表示させています。
問題となっているのは、
MySQLからデータを取得するのに時間がかかり、
2、3秒ほど画面が固まった状態となるため、その対策を実施したいのですが
思うように実現できておりません。
実現したいことは、MySQLからデータを取得する前に、innerHTMLで
あらかじめ『しばらくお待ち下さい』のようなメッセージを表示したいのですが
表示される前にMySQLからデータを取得する処理が開始され、
『しばらくお待ち下さい』が表示されません。
以下の方法では、表示されるようです。
(1)メッセージとデータ取得処理の間に確認ダイアログを表示させる。
(2)ウェイト処理を実施
できれば、innerHTMLにて表示が完了されてから、すぐに
Ajaxにて通信が開始されるような方法を探しているのですが、
何か方法はありませんでしょうか。
(そもそも、DBからデータを取得する時間にかかりすぎている点は、
今後もSQL文を見直すなど、対策はしたいと考えております。)
少しでもご存知の方がいらっしゃいましたら、
ご教授よろしくお願い致します。
以下に、動作させているイベントを記載致します。
//呼び出されるイベント
function test()
{
var result = document.getElementById("result");
result.innerHTML = "<p>しばらくお待ち下さい...</p>";
//↑↑これが表示されてから、以下の通信を実行させたいのですが、表示されません。
//ここにウェイトするような処理がある場合は、表示されます。
//XMLHttpRequestオブジェクト生成
var xmlhttp = createHttpRequest();
if (xmlhttp == null) {
return null;
}
//サーバに要求
sendRequest(xmlhttp, "POST", "test.php", false, null, getResult);
return;
}
//サーバからの応答をxmlhttpにて受信
function getResult(xmlhttp)
{
//サーバから出力された文字列をinnerHTMLにて出力
var result = document.getElementById("result");
result.innerHTML = xmlhttp.responseText;
return;
}
【環境】
ブラウザ:IE8
PHP:5.2
以上、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
せっかくのAJAXなんだから、非同期にしちゃだめなんですか。
たぶん
sendRequest(xmlhttp, "POST", "test.php", true, null, getResult);
じゃないかと....
ご回答ありがとうございます。
Ajaxを使用するのが初めてで、
同期、非同期に関する動作を設定できることが勉強できていませんでした。
ご指摘どおり、falseをtrue設定にし、非同期処理にしたところ、
問題が解決致しました。
初歩的なことであったとは思いますが、
ご回答して頂き、ありがとうございました。
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PDFを(htmlのように)無限に縦...
-
バッチファイル 特定ウインドウ...
-
Googleマップに複数のピンを立...
-
1枚の画像をクリックすると複数...
-
IME
-
Ajax React Jqueryの位置づけと...
-
VBAでクイズゲームの作り方
-
以下のURL入れますか?皆さんは↓
-
画像のドットの部分が抜けてい...
-
Chinapost こよパズルどう動か...
-
非同期通信で掲示板を作る際の...
-
非同期通信を使うタイミングが...
-
PYTHONのtkinterについて
-
Pythonのtkinterについて
-
Pythonを勉強する道のり
-
Pythonを無料(安価)で学ぶ方...
-
RPA(PowerAutomate)の実装について
-
ワードでA3横の画面にして、文...
-
入力フォームの値をQRコードで...
-
課題なのですがどなたかコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データ受け渡しについて
-
ajaxでhtmlを返して画面に描画…...
-
【Ajax】改行を含めたデータを...
-
HTMLでリアルタイムグラフを作...
-
Response.Write(変数)
-
JavaScript側でのXML作成の方法
-
大量のデータを表として展開す...
-
ローカルネットワーク内での502...
-
getJSONで受け取れるよう出力す...
-
先にダウンロードダイアログを...
-
JavaScriptだけで画像アップロ...
-
Rを使う際、データを読み込む時...
-
【JavaScript】confirmのボタン...
-
DirectXとOpenGLはどちらが動作...
-
saved from url=(0013)abou
-
jsonテキストデータの並び替え...
-
ASP.NET(VB)VBソースからJavas...
-
[JavaScript] preven...
-
非同期式3進カウンタ
-
ローカル用HTMLファイルの安全...
おすすめ情報