コメント機能を利用して、2つの戦略から選択しています。私のコメントリストは順序付けられていないリストです。
- DOMのULを応答からのULに置き換えます。
- 応答からの最後のLIをDOMのULに挿入します。
最初のオプションは単純ですが、それが最善または正しい方法ではないように感じます。2番目のオプションを使用したい場合、同時に複数のコメントが投稿された場合、応答のどのコメントがDOMのコメントよりも新しいかを知るにはどうすればよいですか?
考え?
コメント機能を利用して、2つの戦略から選択しています。私のコメントリストは順序付けられていないリストです。
最初のオプションは単純ですが、それが最善または正しい方法ではないように感じます。2番目のオプションを使用したい場合、同時に複数のコメントが投稿された場合、応答のどのコメントがDOMのコメントよりも新しいかを知るにはどうすればよいですか?
考え?
タイムスタンプは、JSが参照するための変数として保持できます。
ページをロードすると、サーバー側の言語によって、ロードされる最後のコメントのタイムスタンプがjavascript変数に割り当てられます。それ以降、コメントを追加するたびに、最後に要求したタイムスタンプを送信します。サーバー側の言語は、そのタイムスタンプよりも新しいコメントをチェックします。さらにリクエストを送信するときは、必ずタイムスタンプを更新してください。応答の一部として送信するか、要求を送信したタイミングを追跡します。
オプション1を選択します。実装ははるかに簡単で、実際にはより高速に実行される可能性があります。ただし、LIにバインドされたイベントハンドラーがないことを確認してください。親ULを更新すると、イベントハンドラーは機能しなくなります。それを避けるためにデリゲートを使用してください。
UL
コメントに最新のを追加する必要がありますLI
。なんで?ULリスト全体を入手して、古いリストを置き換える必要はありません。行う必要のある変更を減らします。最新のLI
ものを入手して、最後に追加するだけです。LESS WORK MORE EFFICIENT
これまでの質問ですが、どれが最新のコメントであるかを知る方法についてです。コメントがDBに保存されるので、タイムスタンプを保存します。初めてコメントを取得するときに、最後のアイテムのタイムスタンプを保持する変数を割り当ててみてください。次に、データベースで保存したタイムスタンプを超えるものをすべて検索した後、リストを取得して追加し、変数を更新します。再び最新のタイムスタンプで。
順序付けされていないリストが次のようになっていると仮定します。
<ul id="commentsList">
<li>Comment 1</li>
</ul>
javascriptであなたは書くでしょう:
$.ajax({
url: "the ajax url",
type: "GET",
data: {//whatever data},
success: function(r){
//Assuming r contains the comment.
//(Don't send html as the response but just the comment text
$("#commentsList").append("<li>" + r + "<li>");
}
});