以下代码将数据提交给服务器。在提交给服务器之前,数据实际上存储在localStorage中。这是因为我要求用户能够在没有互联网连接的情况下使用我的系统。没有互联网连接时的ajax回退
问题是,当没有互联网连接,显然它不能将数据发布到服务器。在这种情况下我应该怎么做?
$('#btnSync').on('click', function(e) {
var my_data = {};
var my_value = [];
for (var i = 0, len = localStorage.length; i < len; ++i) {
if((localStorage.key(i).includes('set'))){
var lsItems = JSON.parse(localStorage.getItem(localStorage.key(i)));
allItems[localStorage.key(i)] = lsItems;
}
}
$.ajax({
url: "action.php",
type: "POST",
data: {'action':'btnSync','allItems':allItems},
dataType: "json",
success: function(data) {
$.notify(
{
message: data.message
},
{
type: data.status,
placement: {
from: "top",
align: "left"
},
newest_on_top: true,
delay: 0
}
);
},
error: function(data){
$.notify(
{
message: 'Unexpected error occured, please kindly contact System Administrator'
},
{
type: 'danger',
placement: {
from: "top",
align: "left"
},
newest_on_top: true,
delay: 0
}
);
}
});
});
您的错误回调将被调用。为什么不维护无法推送到服务器的数据的单独队列(在本地存储中)。定期检查您是否在线并重播ajax电话。 – mode777
看看'window.addEventListener('online',sendToServer) window.addEventListener('offline',alertUser)' –
@ mode777我将数据保存在localStorage中,以避免ajax提交失败时丢失数据。所以至少我有一个localStorage中的数据副本。定期检查意味着使用JavaScript setInterval?似乎你有经验,你能详细阐述一下还是用样本? –