2017-10-07 47 views
0

我正在使用Ajax函數,函數必須每3秒從數據庫中獲取用戶。它工作正常。真正的麻煩是,每3秒刷新一次功能,所以如果有人選擇(通過鼠標),選擇將在3秒後被移除。Ajax自動刪除鼠標選擇

我應該怎麼做才能解決這個問題?

簡單的例子:

ajax_load(); 

setInterval(function(){ 
    ajax_load(); 

}, 3000) 

回答

0

解決的辦法是:

  1. 當用戶改變他的選擇,緩存選擇到一個安全的地方(例如:通過sessionStorage或者HTML部分以外的隱藏輸入那已經改變了)
  2. 內容重新渲染後,從你緩存的地方恢復選擇。

僞代碼:

var ajax_load = function(callback){ 
    $.ajax("request-url", { 
     success: function(data) { 
     appendHTMLContent(); 
     if(callback) callback(); 
     } 
    }); 
}; 

ajax_load(); 

[change-event-example].change(function(){ 
    cacheUserSelection(); 
}); 

setInterval(function(){ 
    ajax_load(restoreUserSelectionCallBack); 
}, 3000); 

例子:

[change-event-example]意味着你需要捕捉的來自用戶的變化的情況下,則緩衝改變。當然,如果發生在複選框的變化則應該是:

HTML:

<input type="checkbox" class="user_selection" data-no="1" /> 
<input type="checkbox" class="user_selection" data-no="2" /> 

的jQuery:

$('.checkbox').change(function() { 
    if($(this).is(":checked")) { 
     cacheUserSelection($(this).data("no")); 
    }  
}); 
+0

我沒有得到它你能解釋這些: '[改變事件-示例] .change(函數(){ cacheUserSelection(); });' 和 ajax_load(restoreUserSele ctionCallBack); –