jQueryのloadでアラートやサウンドを鳴らす

このQ&Aのポイント
  • jQueryのloadを使ってcheck.phpを監視し、新規の発言があった場合にアラートやサウンドを鳴らす方法について教えてください。
  • フォームからの発言をMysqlに登録し、定期的にリロードして表示するテストを行っていますが、新規の発言があった場合にアラートやサウンドを鳴らす方法が分かりません。
  • jQueryのloadでcheck.phpを監視しているのですが、新規の発言があった際にアラートやサウンドを鳴らす方法を教えてください。
回答を見る
  • ベストアンサー

jQueryのloadでアラートやサウンドを鳴らす

フォームからの発言をMysqlに登録し、それを定期的にリロードして表示するテストをしています。 チャットのような感じと言えば分かりやすいでしょうか。 setInterval(function(){ $("#container").load("./check.php"); },30000); //30秒ごとにチェック 上記のようにjQueryを使ってcheck.phpを監視しています。 check.phpにはMysqlを時間でソートし、最新の10件を表示するようにしてあります。 この時、新規の発言があった場合にアラートを表示する、サウンド(chime.wav)を鳴らす、 のどちらかを行いたいのですが、なにをきっかけにすれば良いのかが分かりません。 どなたかお詳しい方、ご教示願います。

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

  • ベストアンサー
  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.2

問題ないと思いますよ。 と、言われても心配は拭えないと思うので、ご自分でしっかり検証はしてみてくださいね。 check.phpは複数人の発言?を登録したDBから30秒ごとに取得します。 ここに個人は関係ないですね。 tableに作成日時や更新日時は持ってますか? 持ってなければレコードのidでもいいと思います。 ただし、このままの実装では自分の発言に対しても、アラートが発生しますので、その辺りが問題なら考慮してあげてください。

bluelagoooon
質問者

お礼

重ね重ねありがとうございます。 sessionとあったので、PHPのsessionのようなものだと勘違いし頓珍漢な返答をしてしまいました。 responseTextで返ってくるんですね。 responseTextの返り値が複雑だったので色々勉強し、jsonで返すようにして解決しました。 ONEONE様のご回答がきっかけで深く勉強する事ができました。 ありがとうございました。

その他の回答 (1)

  • ONEONE
  • ベストアンサー率48% (279/575)
回答No.1

sessionStorageかcookieに毎回、最新時刻を上書き更新して、 前回のものと比較して新しくなってたらalert()という感じでいいんでないでしょうか。 $("#container").load("./check.php", function(responseText){ //前回の最新レコードアップデート時刻を取得 var last_update = sessionStorage.getitem('update'); //今回の最新レコードアップデート時刻を取得(responseTextの中から探す) var this_update = '20140823140912': //セッションに保存 sessionStorage.setitem('update', this_update ); // 前回と今回を比較する : : : });

bluelagoooon
質問者

お礼

ご回答ありがとうございます。 ご教示頂いた内容からsessionStorageを勉強しています。 Mysqlへ書き込まれる発言は私のみではなく、チャットのように複数人が書き込むのですが、この方法でいけますでしょうか?

関連するQ&A

  • jqueryを使って非同期通信で10秒ごとにリロード

    jqueryを使って非同期通信で10秒ごとにリロードをさせようと しているのですが、 setInterval(function(){ $(document.body).load("./hoge.php"); },10000); とすると最初にリロードした10秒と次にリロードされた10秒が 一緒にカウントされているみたいで、リロードの間隔が めちゃくちゃになってしまいます。 どなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • AJAX
  • jqueryについて質問です。

    jqueryについて質問です。 ----------------------------------------------------------- test.js $(window).load(function() { $("body").load("a.php"); $("#btn").click(function() { alert();///動作しない } }); ----------------------------------------------------------- a.html <input type="button" id="btn" name="btn" value="send"> ----------------------------------------------------------- load先のidのクリックを監視するにはどうしたらいいのでしょうか?

  • jQuery POST送信後のページ更新

    いつもお世話になっております。 jQuery+PHPにて、POST送信し、 戻り値の条件分岐でページを遷移させたり、 更新させたいと思っています。 ご教授願えないでしょうか。 index.php内 [ソース] $.POST('./search.php', {'code':12345'}, function(data){ if(data['type'] == '1'){ alert('見つかりません') location.href='./index.php'; } else if(data['type'] == '2'){ location.href='./edit.php; }, 'json' ); 見つかりませんのアラートを表示した後、 location.hrefだと、リロードする事なく。 またlocation.reloadにしても同様です。 $.POST外でlocation.reloadを指定すると リロードしてくれるのですが、$,POST送信してくれません。 もし不可能であれば、location.hrefで別のファイルを経由させて実施しようと思っています。 宜しくお願いします。

    • ベストアンサー
    • AJAX
  • 【jQuery】jQuery Masonry

    この度jQueryで壁にぶつかり、質問させて頂きます。 現在開発中のWEBサービスにて、jQuery Masonryとアコーディオン機能を組み合わせたページを構築する流れとなっております。 画面イメージとしては・・ Pinterestにアコーディオン機能が付いており、各帯をクリックする毎に内容が表示される機能です。 【Point】横幅は制限がありますが、縦幅には制限が無く、アコーディオンが開閉する毎にグリッド部分の再構築(ムーブアクション)を行いたいのですが、それが上手くいきません。 参考サイト:http://goo.gl/QLQI7 実際のソース(抜粋): <script> jQuery(function(){ var $container = $('#container'); $container.imagesLoaded( function(){ jQuery('#container').masonry({ itemSelector: '.item', isAnimated:true }); }); }); </script> <script> jQuery(function () { jQuery("dd").css("display","none"); jQuery("dl dt").click(function(){ var cont = jQuery(this).next(); if(jQuery(cont).css("display")=="none"){ jQuery("dd").slideUp("slow"); jQuery(cont).slideDown("fast"); jQuery("dt").removeClass("select"); jQuery(this).addClass("select"); } }).hover( function(){jQuery(this).addClass("over");} ),( function(){jQuery(this).removeClass("over");} ); }); </script> <div id="container"> ~ここから~ <div class="item"> <dl> <dt>タイトル1</dt> <dd>本文1</dd> <dt>タイトル2</dt> <dd>本文2</dd> <dt>タイトル3</dt> <dd>本文3</dd> </dl> </div> </div> ~ここまでがLoopで複数のデータが表示される~ なお、jQuery初心者でして具体的な構文までをサポート頂けますと幸いです。 よろしくお願い致します。

    • ベストアンサー
    • CSS
  • jQueryのloadのcallbackが変な動作

    jQueryのloadメソッドでCallBackが成功しているにも関わらず失敗する場合があります・・・対象方法が全くわからないのでご教示願えませんでしょうか? 【A.html】 <script type="text/javascript" src="jquery-1.4.1.min.js"></script> <table> <tr> <td><div id = "target_1"><div id = "target_2"></td> </tr> </table> <script type="text/javascript"> $.ajaxSetup({ cache: false }); var xmlHttp; xmlHttp = new XMLHttpRequest(); xmlHttp.open("GET", "A.html", false); xmlHttp.send(null); alert(xmlHttp.responseText); $(document).ready(function(){ $("#target_1").load("a.txt .tag", function(Text, status) { if ($("#target_1").text() == "あああ") { $("#target_1").replaceWith("<img src = 'a.png'>"); else if ($("#target_1").text() == "いいい") $("#target_1").replaceWith("<img src = 'b.png'>"); alert( "text: " + Text + "\nstatus: " + status ); }); $(document).ready(function(){ $("#target_1").load("a.txt .tag", function(Text, status) { if ($("#target_1").text() == "あああ") { $("#target_2").load("a.txt .5tag");★ else if ($("#target_1").text() == "いいい") $("#target_2").load("a.txt .5tag");★ alert( "text: " + Text + "\nstatus: " + status ); }); }); 問題は★印が付いているところの処理です。 アラートではSUCCESSになるのですが、なぜかロードが失敗する時があります。 割合としては10回に1回程度で1回発生するとブラウザの再起動をしない限り二度とロードができなくなります。 原因は何がいけないのでしょうか?

  • jqueryでロードしたPHPファイル更新後の表示について

    始めまして、jqueryを勉強してます。。 かなり初心者です。何度もすみません。 jqueryでロードしたPHPファイルにmysqlのデータを反映させてます。 環境:jquery1.4,php5.1,mysql,eclipse3.5,IE6です。 また記載したソースファイルは同じ階層にあります。 質問はjqueryでロードしたPHPファイル更新後の表示についてです。 IEのインターネットオプションで「ファイル削除」をしてIE更新後しか、 更新したmysqlデータや、phpファイルで更新した内容が、 HTMLファイル<div id="box">で表示されません。 更新しないと、以前のPHPファイルデータが表示されます。 (おそらく,更新後phpファイルのデータの再loadになると思います。。) 解決策ご存知の方しましたら、教えていただけないでしょうか? <!--home.html--> <html> <head> <script type="text/javascript" src="jquery1.4.js"></script> <script type="text/javascript" src="php.js"></script> <title></title></head> <body> <a href="javascript:php()">phpファイル</a> <div id="box">ここに表示</div> </html> //php.js function php(){$("#box").load("phpsql.php");} //phpsql.php. //このファイル内の$testo=1;を$testo=2;に変更しても、「ファイル削除して」更新を //しないと、$testo=1でhtml上で表示されます。 <?php $conn =mysql_connect("","ユーザー","パスワード"); mysql_query("SET NAMES 'sjis' ", $conn); mysql_select_db("データベース",$conn); $sql ="select * from テーブル名"; $rs=mysql_query($sql,$conn); $testo=1; echo '<table>'; echo '<tr><th>NO</tr><th>氏名</th></tr>'; while($row=mysql_fetch_assoc($rs)) { echo '<tr>'; echo '<td>'.$id.'</td><td>'.$name.'</td>'; echo $testo; } ?> 以上がソースです、phpファイルの更新状況を最新の状態でjqueryのloadする方法あれば、教えていただけないでしょうか? すみません。。(SQLは無関係ですね。。)

  • jqueryのAJAXで通信が完了した時のアラートをLightbox風

    jqueryのAJAXで通信が完了した時のアラートをLightbox風に表示したい。 コード <script type="text/javascript"> //<![CDATA[ $(function(){ $('#exebtn').click(function() { $.ajax({ type: "post", url : "sendmail.php", data : { message: $('#message').val(), exebtn:$('#exebtn').val()}, datatype:'text', //ここの部分をどう変えれば出来るのでしょうか? success: function(data) { if(data != ''){ alert(data); }}, }); }); }); //]]> </script> ご教授、宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • jQuery 並列load処理

    jQueryで、ページを構成する要素を並列で取得しようと考えています。 「/samples/heavy_function_parts」は5秒後に現在時刻を返す処理です。 下記のようなコードを書くと、div「Info5」が更新されるのが、ページ表示後 25秒後となります。 5秒後にすべての情報の更新が完了することを期待しているのですが、 どのように修正すべきでしょうか? <script type="text/javascript"> $(function(){ $("#Info1").load("/samples/heavy_function_parts"); $("#Info2").load("/samples/heavy_function_parts"); $("#Info3").load("/samples/heavy_function_parts"); $("#Info4").load("/samples/heavy_function_parts"); $("#Info5").load("/samples/heavy_function_parts"); }); </script> <div id="Info1">情報1</div> <div id="Info2">情報2</div> <div id="Info3">情報3</div> <div id="Info4">情報4</div> <div id="Info5">情報5</div>

    • ベストアンサー
    • AJAX
  • jQueryのloadがたまに失敗します

    今、Webサイト上でページを編集するエディターを作っております。 新規作成ボタンを押して即時反映させるため、loadを使って指定の ファイルを読みだしておりますが、即時反映されない時が時々起こります。 新規作成を2回クリックすると読みだされて反映されます。 $("#Pri").load("private_report.php",null,function(){ alert('読み込み完了'); }); 無料のレンタルサーバだと共有なので通信速度が遅くなり503エラーが出て 失敗することがよくあるとの記事を見たことがあります。 下記の解決方法以外にありますでしょうか。 ・さくらVPSの仮想環境をWEBサイトを動かす ・jQueryのload()メソッドが失敗する? - tuttitanの日記http://tuttitan.hatenablog.com/entry/2016/09/25/132057 ただ、VPSといってもあれも確か共有じゃなかったっけと思うのですが、 それで解決されることがあるのでしょうか。(思い違いならすいません。) 希望としてはレンタルサーバ上で正常に動いてくれることを希望しております。 どなたか解決策のご教示よろしくお願いします。 ※そんなめんどくさいことせずWordPress使えばいいじゃんかと思う回答や そんなの調べればわかるだろみたな発言は求めておりませんのでご了承ください。

  • jqueryについて

    jqueryについて勉強中です。 ひとまず、フォームのチェックボックスやラジオボタンを選択すると必要に応じて checkedを付けたり消したりということをやってみました。 フォームのプログラムはphpで作成しており、必須入力の項目が未入力の場合など エラーがある場合には、確認ページにはいかず入力ページを再表示する仕様です。 jqueryの動作が正しいことを確認してから、項目エラーがある状態で送信ボタンを クリックしてみると選択状態が保持されていませんでした。 checkedが付いている状態で、リロードを含むページの再表示をした場合に、選択 状態を保持するにはpostメソッドを使ってphpで処理するしかないでしょうか? 個人的見解ですが、結果phpで処理するならcheckedの付与はphpで処理をした方が 楽な気もしますが、jqueryについては知識がないのでいい方法があれば教えてください。

専門家に質問してみよう