2017-10-07 79 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); –