2013-11-14 60 views
0

目前我正在使用此功能,但它只能刷新整個#comments div。jQuery AJAX「緩存」參數是否滿足我的需求?

$.ajax({ 
    url: 'WebForm1.aspx', 
    success: function (data) { 
    $("WebForm1.aspx #comments").html(data); 
    } 
}); 

我試圖找出如果jQuery的AJAX可以檢測一下用戶是主動瀏覽網頁,什麼是來自數據庫之間的任何差別,所以每當有人添加了一個評論,觀衆看到的傳入的評論正在消失,而不是整個#comments div定期刷新。

在這裏,是希望的工作流程:

AJAX請求1 - >的jquery獲取數據A,數據B,數據C,並將它們顯示在#comments上的瀏覽器,在其高速緩存保存它。

(數據d被添加到分貝數而以後)

AJAX請求2 - >的jquery獲取數據A,數據B,數據C 和數據d,與高速緩存在瀏覽器上進行比較,並檢測到數據D在以前版本的#comments中不存在,並且僅淡入新的數據D.

我該怎麼做?請幫忙。謝謝。

回答

2

既不jQuery也沒有jQuery.ajax能夠(或mea nt)去做你正在問的東西。比較邏輯必須由您自己完成。

我有幾個建議:

  1. 服務器爲您的數據應該接受一個時間戳參數調用。如果參數未設置,則返回整組註釋,包括帶當前時間的時間戳。如果設置了時間戳參數,請查找自此之後發佈的評論,並僅發送那些評論,並再次輸入當前時間的時間戳。來自服務器的時間戳保存在客戶端上,並隨每個後續請求一起發送。這樣,你總是隻收到新的評論。將這些新評論追加到所需位置的屏幕上,並添加所需的動畫。
  2. 以上需要相當一些變化。如果您無法做到這一點,請使用您當前的代碼。每當加載註釋時,在dom中搜索具有data-comment_id屬性的第一個元素。這個屬性的值是最高的評論ID(假設你不能重新排序評論,否則你的檢查需要更強大)。在成功回調中,爲具有data-comment_id屬性的元素搜索數據參數(它是html),並在data-comment_id值爲1的元素之後的所有元素之後丟棄所有元素,比目前爲止的最高評論ID高。將您留下的html附加到所需的動畫中。

希望能幫助你走上正確的軌道。

+0

非常感謝。 – thenewseattle

+0

+1解釋我懶得做 – MonkeyZeus

0

您將需要某種形式的setInterval的不斷找出最新的評論是和最新的意見ID後獲取新的數據

JS

// check every ten seconds 
setInterval(function() { 

    // figure out most recent comment and pass it to the URL so your query can search for anything greater than newest_comment 
    $.ajax({ 
     url: 'WebForm1.aspx', 
     type: 'GET', 
     data: {'newest_comment':$('#comments').find('span.comment:eq(0)').data('comment_id')}, // newest_comment would be 5 
     dataType: 'HTML', 
     success: function (data) { 
      $("#comments").prepend(data); 
     } 
    }); 

}, 10000); 

可能的HTML

<div id="comments"> 
    <span class="comment" data-comment_id="5"></span> 
    <span class="comment" data-comment_id="4"></span> 
    <span class="comment" data-comment_id="3"></span> 
    <span class="comment" data-comment_id="2"></span> 
    <span class="comment" data-comment_id="1"></span> 
</div> 
相關問題