我正在处理网络应用的离线模式,我对本地存储存在问题。我一次又一次地浏览了我的代码,却找不到什么问题。你可以帮助我吗?
简要上下文:用户可以发送请求(表单)并将其保存在我们的数据库中。然后,他/她可以查阅数据库中保存的每个请求。
原则:当用户发送他/她的请求时,代码会检查是否存在互联网连接。如果检测到一个,则发送Ajax请求。如果它没有检测到,请求(表单)的数据将保存到本地存储中。每隔30秒,代码再次检查连接,如果检测到连接,它将检索保存的数据,发送Ajax请求,并从本地存储中删除该项。
问题:该项永远不会从本地存储中删除,因此它会不断发送Ajax请求...
代码:
检查本地商店
var run = function(){
// checking connection
Offline.check();
// if connection ok
if(Offline.state === 'up'){
// if there is data saved
if(localStorage.length !== 0){
// sending every pending requests back
for (var i = 0, len = localStorage.length; i < len; i++){
var request = localStorage.getItem(localStorage.key(i));
var jsonR = JSON.parse(request);
jQuery.ajax({
type: "POST",
url: "ajaxAMS_request.php",
data: jsonR,
dataType: "html",
async: true,
success: function(){
// deleting item from data store
localStorage.removeItem(localStorage.key(i));
}
});
}
}
}
};
setInterval(run, 30000); // 30 sec interval
如果没有连接,保存数据
var dataRequest = {type: 'add', id_place: idPlace, id_user : idUser}; // JSON
var strJSONDataR = JSON.stringify(dataRequest); // turned into string for storing
localStorage.setItem(savingKey, strJSONDataR); // stored