複数のfromが取り込まれる div#notification-data
があります。$(document).ready
<li></li>
$.post
$.post
then が呼び出されるので、setTimeout(poll_n,9000);
データは最新です。
したがって、毎回すべてのデータを更新するわけではありません。 に<li></li>
既に存在するかどうかを確認したいと思います。#notification-data
存在しない場合は、 にprepend()
し#notification-data
ます。
データは次の形式で提供されます。
<li id="new_notification_1" class="seen_0 li_notification">blah</li>
<li id="new_notification_2" class="seen_0 li_notification">bleh</li>
追加の質問として、これは長いポーリングの正しい方法ですか?
これが私のコードです:
function poll_n(){
$.post('<?php echo $siteUrl ?>notifications.php?x=' + (new Date()).getTime() +'', function(data) {
$(data).find(".li_notification").each(function () {
var li_id = $(this).attr('id');
if ($(li_id).closest('#notification-data').length) {
//do nothing
} else {
$('#notification-data').append(??not_sure_what_goes_here??); // process results here
}
});
setTimeout(poll_n,9000);
});
}
編集 - 回答後、これを取得しましたが、機能しません(コンソールに何も表示されません)。
success: function(data){
$(data).find(".li_notification").each(function() {
var id = $(this).attr('id'),
notification = $('#notification-data');
console.log(id);
console.log('hello');
if (notification.find('#' + id).length === 0) {
// notification doesn't exists yet then lets prepend it
notification.prepend('#' + id);
}
});
},