键值对未从localStorage中删除

时间:2016-01-08 14:48:35

标签: javascript ajax html5 local-storage

我正在处理网络应用的离线模式,我对本地存储存在问题。我一次又一次地浏览了我的代码,却找不到什么问题。你可以帮助我吗?

简要上下文:用户可以发送请求(表单)并将其保存在我们的数据库中。然后,他/她可以查阅数据库中保存的每个请求。

原则:当用户发送他/她的请求时,代码会检查是否存在互联网连接。如果检测到一个,则发送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

0 个答案:

没有答案