2011-01-02 16 views
1

非常に単純に、新しいプライベートメッセージがあるときにエンドユーザーに警告する必要があります。 研究と他の意見の組み合わせから、私はこれにAJAXを使用する必要があることを認識しています。AJAXを使用して新しいメッセージを確認する

mysqlのクエリは、誰かがメッセージを送信するとき

SELECT id FROM tbl_messages WHERE to_viewed = 1 

だから、私は警告がページのリロードなしにユーザーに通知するために、画面にポップアップしたいだろう。

私は何をしているのか全く分かりませんが、私が欲しいものを知っています。 本当に助けが必要ですが、AJAXはもっと大きな可能性を開くように改善したいと思っています。

おかげ

+1

PHP、ASP、ASP.NET、Python、Ruby/Railsを使用している言語/フレームワークを教えてください。 – Kev

+0

PHPを使用して申し訳ありません。 – sark9012

答えて

1

あなたは、クライアント側の2つのオプションがあります。Ajaxを経由

  1. ポーリング:x秒ごとに、メッセージをチェックするために、サーバーにリクエストを送信します。

  2. サーバープッシュビアコメット:サーバーへの接続を開き、サーバーからメッセージが返るまで待ちます。

多数のクライアントサイドライブラリがあります。 Ajaxの場合、JQueryを使用できます。彗星については、Dojoを見てください。しかし、あなたのサーバー/プラットフォームはCometをサポートしなければなりません。私はJettyを使ってJavaで可能であることは知っていますが、他のプラットフォームについてはわかりません。

+0

もし私がAJAXと一緒に行くなら、正しい方向に私を押し込めますか? – sark9012

+1

45秒ごとに確認したいとします。 – sark9012

+2

Javascriptのチュートリアルを実行する必要があります。 xミリ秒後に関数を呼び出すsetInterval関数があります。 jQueryまたはMootoolsはAJAX呼び出しをかなり抽象化できます.Javascriptを使用していない場合は、jQueryをお勧めします。 – Xorlev

7

簡潔にするためにjQueryを使用すると、JavaScriptの経験がない場合は、学習をお勧めします。

var check; 
function checkForMessages() { 
    $.get("/newMessages.php", function(data) { 
     if(data == 1) { 
      //There are new messages 
      clearInterval(check); 
      alert("You have new mail!"); 
     } 
    }); 
} 

check = setInterval(checkForMessages, 60000); 

上記のJavaScriptは、60秒ごとにサーバーにpingを実行します。新しいメッセージがある場合、スクリプト「newMessages.php」は「1」を返します。私はあなたがそれを把握することができると思うので、あなたはすでに書かれた質問を持っています。

+0

ねえ、私はこれが一歳だと分かっていますが、私は彼と同じ問題に遭っています。とにかく、私はこのスニペットを見て、setIntervalとclearTimeoutを持っています。それは明らかではないでしょうか? –

+1

@JohnathanAu良いキャッチ!私はコードを更新しました、ありがとう! –

+0

もう一度スニペットから持ち歩く。今すぐ新しいメッセージが受信され、再度チェックしないと、それは停止します。 = S –

関連する問題