1
我想爲我的網站實現自動保存功能。
我的意思是,我希望用戶在整個網站編輯的所有字段都應該自動保存,不需要點擊任何按鈕。所以用戶可以繼續編輯。使用JQuery AJAX的AutoSave體系結構
[網站設計使用:CodeIgniter和JQuery]。
此功能,我正在執行如下。
1.在javascript中創建了一個隊列數據結構,並且我正在推送用戶所做的所有更改。所以這就像一個持有所有用戶變化的對象。
2.然後寫了一個函數來保存這個隊列的內容到數據庫。
function start(){
var changeData = dq.get(); //getting the data from Queue
while(changeData !== undefined){
$.ajax({
type: 'POST',
url: '/ci/ajax/insert/',
data: {changeData},
success: function(data, status, xml){
alert('succefully inserted data -- '+data);
}
});
changeData = dq.get();
}
setTimeout(function(){ start(); }, 5000);
};
start();
這裏我將間隔設置爲5秒。
問題是,我在5秒內做了兩次或多次更改,但只有第一次更改正在更新。但是,根據我所做的更改,我獲得了2次或更多次警報。
在哪裏,我錯了?
也建議我實現自動保存功能的更好方法。
謝謝!
負載相信的setTimeout()應該在回調 - 否則,你可以調用一個多個異步方法第一個返回數據之前。 – OzrenTkalcecKrznaric
這是我能找到的解決方案之一。 http://stackoverflow.com/a/1060784/1841369 –
你正在嘗試處理併發的Ajax請求,而你應該防止這種情況。最簡單的方法就是發送請求,等待響應,並在您收到響應時間安排的下一個請求。否則可能會發生請求重疊,您需要排隊或某種同步方法來解決該問題。 – OzrenTkalcecKrznaric