Javascript 在localStorage HTML5上存储FormData对象

Javascript 在localStorage HTML5上存储FormData对象,javascript,jquery,ajax,html,Javascript,Jquery,Ajax,Html,我正在尝试将一些数据保存到脱机应用程序上的localStorage。当用户处于脱机模式时,浏览器将从表单、FormData对象收集数据,并将其存储到localStorage;当浏览器处于联机状态时,它将通过jQuery ajax将存储在localStorage中的FormData对象推送到服务器。其复杂性在于表单具有动态字段,并且可以具有fileupload字段,问题在于html5上的localStorage支持数据作为字符串而不是对象 Collection.prototype.storeOff

我正在尝试将一些数据保存到脱机应用程序上的localStorage。当用户处于脱机模式时,浏览器将从表单、FormData对象收集数据,并将其存储到localStorage;当浏览器处于联机状态时,它将通过jQuery ajax将存储在localStorage中的FormData对象推送到服务器。其复杂性在于表单具有动态字段,并且可以具有fileupload字段,问题在于html5上的localStorage支持数据作为字符串而不是对象

Collection.prototype.storeOfflineData = function(collectionId){
   var formData = new FormData($('form')[0]);
   pendingSites = {"collectionId" : collectionId, "formData" : formData};
   window.localStorage.setItem("offlineSites", JSON.stringify(pendingSites));
   Collection.prototype.goHome();
   Collection.prototype.showErrorMessage("Successfully store data in offline.");
}
当浏览器联机并连接到internet时,我创建了从本地存储读取FormData并向服务器发出ajax请求的方法,但ajax请求出错,因为JSON.parse返回“[object]”


这对我来说很好,可能是FormData对象不符合JSON标准,你能提供FormData的输出吗,只需做控制台。log(FormData)你使用FormData对象而不是仅仅存储表单字段的值有什么原因吗?FormData{append=append()}但是在stringify和使用JSON.parse之后返回对象{}. 我认为Stringify可能会更改FormData对象。@Musa我的表单是动态表单。所以我需要一个FormData对象来获取表单中的所有数据,并通过jQueryAjax发送到服务器
Collection.prototype.pushingPendingSites = function(){
  pendingSites = JSON.parse(window.localStorage.getItem("offlineSites"));
  if(pendingSites != null){
    console.log(pendingSites[i]["formData"]);
    Collection.prototype.ajaxCreateSite(pendingSites[i]["collectionId"], pendingSites[i]["formData"]);
  }
}

Collection.prototype.ajaxCreateSite = function(collectionId, formData){
  $.ajax({
    url: '/mobile/collections/' + collectionId + '/sites',  //Server script to process data
    type: 'POST',
    success: function(){
      Collection.prototype.goHome();
      Collection.prototype.showErrorMessage("Successfully saved.");
    },
    error: function(data){
      Collection.prototype.showErrorMessage("Save new site failed!");
    },
    data: formData,
    cache: false,
    contentType: false,
    processData: false
  });
}