2014-05-19 9 views
5

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जो उपयोगकर्ता को उनके द्वारा देखी गई जगह के बारे में यादें सबमिट करने की अनुमति देता है और स्मृति सबमिट होने के स्थान को ट्रैक करता है। मेरी एकमात्र समस्या ऐप के साथ स्थानीय स्टोरेज का उपयोग करने की कोशिश कर रही है, मैंने JSON.stringify और JSON.parse के बारे में पढ़ा है, और यह समझ में नहीं आता कि अभी तक मेरे कोड में उनका उपयोग कैसे किया जाए।लोकल स्टोरेज और JSON.stringify JSON.parse

यह मेरा फॉर्म है .js यह फ़ॉर्म को संसाधित करता है और टेक्स्ट फ़ील्ड को पकड़ता है। यह फॉर्म को साफ़ करता है जब ऐड बटन (डिस्प्ले विवरण पृष्ठ पर) या एंटर विवरण बटन क्लिक किया जाता है। अंततः यह जानकारी प्राप्त करता है और संदेश को वापस विंडो भेजता है।

function processForm(){ 

var locate = document.myform.locate.value; 
var details = document.myform.details.value; 
var storeData = []; 
localStorage.setItem("locate", JSON.stringify(locate)); 
localStorage.setItem("details", JSON.stringify(details)); 
alert("Saved: " + localStorage.getItem("locate") + ", and " + localStorage.getItem("details")); 

var date = new Date, 
    day = date.getDate(), 
    month = date.getMonth() + 1, 
    year = date.getFullYear(), 
    hour = date.getHours(), 
    minute = date.getMinutes(), 
    ampm = hour > 12 ? "PM" : "AM";  
    hour = hour % 12; 
    hour = hour ? hour : 12; // zero = 12 
    minute = minute > 9 ? minute : "0" + minute; 
    hour = hour > 9 ? hour : "0" + hour; 

    date = month + "/" + day + "/" + year + " " + hour + ":" + minute + " " + ampm; 

localStorage.setItem("date", JSON.stringify(date)); 

storeData.push(locate, details, date); 
localStorage.setItem("storeData", JSON.stringify(storeData)); 
} 

function clearForm(){ 
$('#myform').get(0).reset(); 
} 

function retrieveFormInfo(){ 

var data = JSON.parse(localStorage.getItem("storeData")); 

var locate = JSON.parse(localStorage.getItem("locate")); 
$("#locate2").html("Place: " + locate); 

var details = JSON.parse(localStorage.getItem("details")); 
$("#details2").html("Description: " + details); 

var date = JSON.parse(localStorage.getItem("date")); 
$("#date").html(date); 

} 

लेकिन बड़ी समस्या मैं में चल रहा हूँ मैं कैसे सही ढंग से JSON.stringify और JSON.parse का उपयोग कर और html तत्वों गतिशील रूप से खिड़की करने के लिए इसे जोड़कर उस जानकारी लेने के लिए, मुख्य रूप से एक सूची की तरह जानते हो जाता है यादों का

किसी भी मदद की सराहना की जाती है!

+0

पोस्ट प्रासंगिक कोड यहाँ अगली बार - http: //www.sscce। संगठन/कुछ विचारों के लिए अपने कोड से उपयोगी नमूना कैसे बनाएं। आप पहले से ही अपने कोड में एक सरणी सेट कर चुके हैं - 'storeData = []', और इसमें तत्व जोड़े - 'storeData.push() '। जो भी आप शायद करने के लिए देख रहे हैं, एक वस्तु का उपयोग है, क्योंकि आप जो भी मूल्य जोड़ रहे हैं उसे नाम देना चाहते हैं - उदा। तिथि, घंटा, मिनट। आप ऑब्जेक्ट - 'store = {}' बनाकर और फिर इसमें गुण जोड़कर ऐसा कर सकते हैं - 'store [' date '] = ... '। – Sacho

उत्तर

0
var printStorageBody = function(){ 
    $("body").html(""); 
    $("<pre></pre>").appendTo("body"); 
    $("pre").html("\r\n" + JSON.stringify(localStorage).replace(/","/g , "\r\n").replace("{ ", "").replace(" }","") + "\r\n"); 
}; 
8

स्थानीय स्टोरेज स्टोर केवल प्रमुख मूल्य जोड़े।

मान लें कि आपके पास एक आइटम है जो प्रत्येक आइटम को जेसन ऑब्जेक्ट के साथ संग्रहीत किया जाता है। पुनर्प्राप्त करने के लिए आइटम localStorage आइटम और फिर से अधिक पुनरावृति

  • stringify हर आइटम और दुकान में locaStorage
var item = {input1: 'input1value', input2: 'input2value' }; 
localStorage.setItem(itemIndex, JSON.stringify(item)); 
  • :

    विकल्प 1:

    आप 2 विकल्प मिल गया आइटम को JSON ऑब्जेक्ट में कनवर्ट करें:

for(var i=0;i<localStorage.length; i++) { 
    var key = localStorage.key(i); 
    var item = JSON.parse(localStorage.getItem(key)); 
} 

विकल्प 2:

  • पूरे सरणी और localStorage

    localStorage.setItem('memoriesdata', JSON.stringify(arr));

  • में दुकान डेटा आइटम को पढ़ने के रूप में स्ट्रिंग तो JSON ऑब्जेक्ट

    में बदलने को पढ़ने के लिए stringify

    var arr = JSON.parse(localStorage.getItem('memoriesdata'));

3

सबसे पहले अपने इनपुट फ़ील्ड के मान जावास्क्रिप्ट ऑब्जेक्ट में प्राप्त करें।

var myMemory = {}; 
myMemory.location = document.getElementById('location').value; 
myMemory.description = document.getElementById('description').value; 

अब localStorage को MyMemory बचाने के लिए, यह एक फार्म जमा करने या एक बटन प्रेस पर किया जा सकता है। हम यादों की एक सरणी के रूप में स्टोर कर सकते हैं और हर बार आइटम जोड़ सकते हैं।

//if user already has memories in local, get that array and push into it. 
//else create a blank array and add the memory. 
memories = localStorage.getItem('memories') ? 
       JSON.parse(localStorage.getItem('memories')) : 
       []; 
memories.push(myMemory); 
localStorage.setItem('memories', JSON.stringify(memories)); 
2

मैं इस Storage कार्यान्वयन का उपयोग करें। यह वहां कई स्टोरेज प्लगइन्स से प्रेरित है ...यह JSON.stringify समारोह से किसी भी मूल्य serilizable संभालती है, और (और 'कुकी अक्षम' फ़ायरफ़ॉक्स में) xbrowser काम करना चाहिए:

// 
// api: 
// 
// .clear() empties storage 
// .each()  loops storage (key, value) pairs 
// .fetch() get a value by key 
// .has()  checks if there is a key set 
// .ls()  lists all keys 
// .raw()  string value actually stored 
// .reload() reads in serialized data 
// .rm()  removes key(s) 
// .set()  setup value(s) 
// .type()  storage type used 'localStorage/globalStorage/userData' 
// .valid() is storage engine setup correctly 
// 
; 
((function(name, def, glob, doc) { 

    // add 'store' id to globals 
    this[name] = def(glob, doc); 
}).call(
    this, "store", function(glob, doc) { 

    // private (function) store version 
    var stclient; 

    var driver = { 
     // obj : storage_native{}, 
     // type : storage_type 
    }; 

    var engine = { 
     // read : (func), 
     // write : (func) 
    }; 

    var _ = { 

     a: Array.prototype, 
     del: function(node) { // , ...fields 

     _.slc(arguments, 1). 
     forEach(function(field) { 
      delete this[field]; 
     }, node); 

     return node; 
     }, 
     each: function(array, callback, context) { 

     context || 
      (context = array); 

     array. 
     some(function() { 
      return false === callback.apply(context, arguments); 
     }); 

     return array; 
     }, 
     hasown: Function.prototype.call.bind(Object.prototype.hasOwnProperty), 
     jsdc: JSON.parse, // decode 
     jsec: JSON.stringify, // encode 
     keys: Object.keys, // shimed .keys 
     ns: "storage5", // single property name to keep serialized storage data under 
     object: null, // parsed storage data 
     slc: Function.prototype.call.bind(Array.prototype.slice), 
     test: { 

     isemptyobj: function(node) { 
      for (var x in node) 
      return false; 
      return true; 
     }, 

     isplainobj: function(node) { 
      return '[object Object]' == Object.prototype.toString.call(node); 
     }, 

     }, 
     testval: 'storage' + Math.random(), // test value for implementation check 
     rig: function(target, items) { 

     for (var field in items) 
      if (items.hasOwnProperty(field)) 
      target[field] = items[field]; 

     return target; 
     }, 
     clone: function(node) { 
     return _.jsdc(_.jsec(node)); 
     }, 
     puts: function() { 
     engine.write(_.jsec(_.object)); 
     }, 
    }; 

    stclient = function storage5() { 
     return arguments.length ? 
     storage5.set.apply(storage5, arguments) : 
     storage5.fetch(); 
    }; 

    // _init on load|ready 
    window.addEventListener('load', _init, false); 

    return _.rig(stclient, { 

     clear: function() { 
     return _.object = {}, _.puts(), this; 
     }, 

     each: function(callback, context) { 

     context || 
      (context = this.fetch()); 

     _.each(this.ls(), function(field) { 
      return callback.call(context, field, this.fetch(field)); 
     }, this); 

     return this; 
     }, 

     fetch: function(key) { 
     return (arguments.length) ? 
      _.object[key] : _.clone(_.object); 
     }, 

     has: function(name) { 
     return _.hasown(_.object, name); 
     }, 

     ls: function() { 
     return _.keys(_.object); 
     }, 

     raw: function() { 
     return engine.read(); 
     }, 

     reload: _load, 

     rm: function() { 

     _.del.apply(null, _.a.concat.apply([_.object], arguments)); 

     return _.puts(), this; 
     }, 

     set: function(input, value) { 

     var len = arguments.length; 
     var flag = 1; 

     if (len) { 

      if (_.test.isplainobj(input)) { 

      _.keys(input). 
      forEach(function(field) { 
       _.object[field] = input[field]; 
      }); 

      } else { 

      if (1 < len) 
       _.object[input] = value; 
      else 
       flag = 0; 

      } 

      flag && _.puts(); 

     } 

     return this; 
     }, 

     type: function() { 
     return driver.type || null; 
     }, 

     valid: function() { 
     return !_.test.isemptyobj(driver); 
     }, 

    }); 

    function _init() { 

     var flag = 0; 
     var stnative; 

     if ("localStorage" in glob) { 
     try { 
      if ((stnative = glob["localStorage"])) { 
      // inits localStorage 
      _initlocst(stnative, driver, engine); 
      flag = 1; 
      } 
     } catch (e) {} 
     } 

     if (!flag) { 

     if ("globalStorage" in glob) { 
      try { 
      if ((stnative = glob["globalStorage"])) { 
       // inits globalStorage 
       _initglobst(stnative, driver, engine); 
       flag = 1; 
      } 
      } catch (e) {} 
     } 

     if (!flag) { 
      // inits userDataStorage 
      _initusrdatast(doc.createElement(_.ns), driver, engine); 
     } 
     } 

     // parse serialized storage data 
     _load(); 
    } 

    function _initlocst(stnative, driver, engine) { 

     stnative[_.testval] = _.testval; 

     if (_.testval === stnative[_.testval]) { 

     try { 
      stnative.removeItem(_.testval); 
     } catch (e) { 
      try { 
      delete stnative[_.testval]; 
      } catch (e) {} 
     } 

     driver.obj = stnative; 
     driver.type = "localStorage"; 

     engine.read = function() { 
      return driver.obj[_.ns]; 
     }; 

     engine.write = function(stringvalue) { 
      driver.obj[_.ns] = stringvalue; 
      return stringvalue; 
     }; 

     } 
    } 

    function _initglobst(stnative, driver, engine) { 

     var host = glob.location.hostname; 

     driver.obj = (/localhost/i).test(host) ? 
     stnative["localhost.localdomain"] : stnative[host]; 

     driver.type = "globalStorage"; 

     engine.read = function() { 
     return driver.obj[_.ns]; 
     }; 

     engine.write = function(stringvalue) { 
     driver.obj[_.ns] = stringvalue; 
     return stringvalue; 
     }; 

    } 

    function _initusrdatast(node, driver, engine) { 

     try { 

     node.id = _.ns; 
     node.style.display = "none"; 
     node.style.behavior = "url('#default#userData')"; 

     doc. 
     getElementsByTagName("head")[0]. 
     appendChild(node); 

     node.load(_.ns); 

     node.setAttribute(_.testval, _.testval); 
     node.save(_.ns); 

     if (_.testval === node.getAttribute(_.testval)) { 

      try { 

      node.removeAttribute(_.testval); 
      node.save(_.ns); 

      } catch (e) {} 

      driver.obj = node; 
      driver.type = "userData"; 

      engine.read = function() { 
      return driver.obj.getAttribute(_.ns); 
      }; 

      engine.write = function(stringvalue) { 
      driver.obj.setAttribute(_.ns, stringvalue); 
      driver.obj.save(_.ns); 
      return stringvalue; 
      }; 

     } 

     } catch (e) { 
     doc. 
     getElementsByTagName("head")[0]. 
     removeChild(node); 
     } 

     node = null; 
    } 

    function _load() { 

     try { 
     _.object = _.jsdc((engine.read() || engine.write("{}"))); 
     } catch (e) { 
     _.object = {}; 
     } 
    } 

    }, window, document)); 

    //eof 
संबंधित मुद्दे