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で質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP PHP MySql ページング 2 2022/09/20 06:38
- JavaScript 【jquery】EasyUIのSubGridにMySQLのテーブルデータを表示&編集にしたい 5 2022/05/02 13:10
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カーソルの動きに合わせてDBか...
-
Ajaxでpostした内容のresponse...
-
HTMLでリアルタイムグラフを作...
-
データ受け渡しについて
-
セレクトボックスのHTMLを教え...
-
【JavaScript】confirmのボタン...
-
ローカル用HTMLファイルの安全...
-
リンクを押すとEXEファイルを実...
-
saved from url=(0013)abou
-
外部プログラム実行時の戻り値
-
wininet.dllのInternetOpenの同...
-
HTMLでDBからデータを表形式で...
-
JK-FFを使う非同期10進・2進カ...
-
subversionでコミットしたらftp...
-
非同期通信を使うタイミングが...
-
ASP.NET(VB)VBソースからJavas...
-
JQuery サーバー上にアップする...
-
Javadcriptでwebサーバー側にあ...
-
[JavaScript] preven...
-
HTMLファイルにテキストファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを表として展開す...
-
データ受け渡しについて
-
Response.Write(変数)
-
ajaxでhtmlを返して画面に描画…...
-
Ajaxで最新の情報が取得できない
-
HTMLでリアルタイムグラフを作...
-
【Ajax】改行を含めたデータを...
-
jquery serializable値取得
-
innerHTMLで表示完了後に、Ajax...
-
Ajaxでpostした内容のresponse...
-
Jqueryのキャッシュについて
-
JavaScript側でのXML作成の方法
-
AjaxでDBと連携した動的リスト...
-
先にダウンロードダイアログを...
-
jQueryの$.postの戻り値による...
-
チャットを作る
-
カウントダウンを表示
-
ローカルネットワーク内での502...
-
【JavaScript】confirmのボタン...
-
HTMLでDBからデータを表形式で...
おすすめ情報