7

ページを更新せずにコメントを投稿したり更新したりできるこのコメント システムを作成する予定です (これは YouTube で見ることができます)。

コメントの投稿は理解できます (javascript から php ページに投稿し、サーバー側で SQL クエリを実行してインポートし、コメントを返して html でフェッチします)。

更新は私が理解していない部分です。特定の間隔でページを自動的に更新し、コメントを追加するにはどうすればよいですか? 複数のユーザーが同時にコメントしようとすると、混乱しませんか?

これを達成して時間を節約するための良い方法(アドバイスの言葉のように)を誰かが推奨できるかどうか疑問に思っていました

4

4 に答える 4

2

最も一般的な方法は、javascript で setTimeout または setInterval を呼び出して、5 ~ 25 秒ごとにポーリングすることです。基本的に、最後に受け取ったコメントのアイデアを JavaScript 側に保存し、この ID をリモート サーバーに送信する関数を呼び出します。この ID よりも新しいメッセージがある場合は、それらすべてを XML または JSON 経由で送り返します (特に jQuery のようなフレームワークを使用している場合は、通常、JavaScript 側で処理するのは JSON の方が簡単です)。

于 2012-10-27T01:48:28.660 に答える
1

「ロングポーリング」を利用できます。基本的には、Ajax 接続を開き、送信する応答があるまでサーバーを閉じない手法です。この応答を受信したクライアントは、新しい接続を要求し、再び応答を待ちます。

チュートリアルを確認できます: Simple Long Polling Example with JavaScript and jQuery

于 2012-10-27T02:15:09.147 に答える
1

もう 1 つの非常に優れた方法は、サブスクライブ/パブリッシュ サービスを使用することです。

現在、通知、コメントなどにPubNubを使用しています。

于 2012-10-27T02:33:55.600 に答える
0

私はかつて、新しいコメントのみを表示し、他の人が既存の表示されたコメントに対して行った編集や削除を行わないという欠陥のある単純な手法 (タイマーを使用せず、完全に更新しない) を使用しました。「展開 / 折りたたみ / もっと見る」コメントを許可している場合、コメント パネル全体を更新できない可能性があることに注意してください。私の簡単なテクニックは、(i)最後に表示されたコメントのインデックス/プライマリキーを格納するための非表示の入力要素(ii)既存の表示されたコメントを保持するためのいくつかの一意に識別されたdivと、アクションが実行されたときにそのdivのみのajaxリフレッシュまたはhtml dom操作を行うことです。その上に(iii)さらにコメントを表示するボタンを保持するdiv。これにより、表示するコメントがさらにある場合にのみボタンが表示されます。

したがって、新しいコメントが投稿されるたびに、「ボタンでさらにコメントを表示」パネルが更新され、[X + (他のユーザーによる最近の新しいコメントの数) + (あなたの新しいコメントの数)] のコメントが表示されます。ボタンをクリックすると、「さらに Y 件のコメントを表示」ボタンとともに、さらに 3 つの新しいコメントが表示されます。

于 2012-10-27T03:30:56.360 に答える