2

ユーザーが受信トレイのリンクをクリックしたときに、そのリンクに関連するメッセージを としてマークしたいと考えていますseen

SOにもこの機能があり、
誰かが私の投稿に返信すると、SOは私の投稿に何かが起こったことを示します。
受信トレイのメッセージをクリックして投稿にアクセスすると、通知マークが表示されなくなりました。

ユーザーが質問ページにアクセスするたびに、質問の訪問ユーザーに受信トレイメッセージがあるかどうかをテストするには費用がかかりすぎると思います。メッセージをマークするためにボンネットの下で ajax リクエストを送信できるように、受信トレイ ページで
キャッチすることは可能かどうか疑問に思いますclicking-linkas seen

私の質問が明確であることを願っています。

4

2 に答える 2

1

クリックする各メッセージにカスタム データ属性を追加します。メッセージの表示方法はわかりませんが、この例ではスパンを使用します。

<span class="message">Some Message</span>

そしてJS:

$(".message").click(function() {
    $(this).data("visited", true);
});

次に、スパンをチェックして、それらが訪問されたかどうかを確認できます。それでも AJAX 呼び出しを実行したい場合は、クリック ハンドラー内に AJAX イベントを追加することもできます。

于 2013-06-28T03:41:06.167 に答える
0

「既読」と「未読」を区別するために、メッセージテーブルにある種の「ステータス」フィールドがあると仮定しています。

ページが読み込まれるたびにクエリを実行せずに受信ボックスに未読メッセージの数を効率的に保存する方法を知りたい場合は、 $_SESSION 変数を設定することで簡単に実現できます。

$_SESSION['unread_messages'] = 2;

この変数が設定された後、定期的に (約 5 分ごとに) チェックして、適切なウィンドウ内で最新の状態に保つことができます。メッセージがクリックされて読まれると、この値から 1 を引くか、未​​読メッセージの数を再クエリします。

データベースと UI を更新する方法について質問している場合、これを行うには主に 2 つの方法があります。ユーザーがメッセージをクリックしたときにスクリプトで現在何が起こっているかによって異なります。メッセージをロードするために AJAX リクエストを行いますか、それともリンクによってユーザーが別のページに移動しますか?

メッセージがクリックされたときに AJAX 要求を行う場合は、AJAX 要求で呼び出されるスクリプトでメッセージを (データベースで) 既読としてマークし、JavaScript を使用して現在のページの UI を更新します (クリックされたメッセージの太字テキストを削除します)。

メッセージをクリックすると、メッセージ全体が表示される別のページにリダイレクトされる場合、そのページが読み込まれたときに、メッセージをデータベースで既読としてマークできます。

于 2013-06-28T03:52:45.060 に答える