2016-12-10 5 views
1

私はjquery mobileの新機能です。私は学校の割り当てのための買い物リストアプリケーションをやっていて、ローカルストレージにオブジェクトを保存するように要求されています。JQuery Mobile JSON Stringify

各アイテムには、アイテム名、アイテム数量、ブール値が記載されている必要があります。 すべてのアイテムデータを1つのJSON文字列に格納したいと思います。アイテムデータは、他のページからユーザによって入力される。

私の問題は です。1)項目をJSON stringifyを使用してローカルストレージに保存する方法。

2)JSON文字列からアイテムデータを取得してリストに表示する方法。

+0

http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage – Viney

答えて

2

まず

{ 
    "name": "cheese", 
    "quantity": 2, 
    "is_bought": false 
} 

そうでない場合には(質問に、あなたの変数のためのキー(名前を)持っていません)あなたの構造する必要があります。私は右のあなたを理解している場合は、オブジェクト(JSON)のような構造を持っています私はオブジェクトの各変数へのアクセスを持っているために示したようです。

第2:約localStorageです。これは文字列のキーと値のペアのみを処理するために制限されているため、オブジェクトを保存することはできません。 JSON.stringify()を使用してオブジェクトを文字列に解析し、localStorageに保存してから、取得後にJSON.parse()を使用して解析し直してください。コードは次のようになります。

var item = {"name": "cheese", "quantity": 2, "is_bought": true}; 

// Store item into localStorage 
localStorage.setItem('item', JSON.stringify(item)); 
// Retrieve item from localStorage 
var retrievedItem = localStorage.getItem('item'); 
var parsedItem = JSON.parse(retrievedItem); 

EDIT:あなたの項目の名前がユニークであれば、あなたの質問が複数の項目を格納し、それらを区別する程度であり、あれば、そう

複数のアイテムを保存するためにはあなたはどのアイテムが購入されているかを知っていますが、アイテムの名前のキーを使ってlocalStorageにアイテムを保存することができます。

// You can do this in a for loop 
localStorage.setItem('item_' + item.name, JSON.stringify(item)); 

// And to change (if you already know bought item's name), 'cheese' for example 
var retrievedItem = localStorage.getItem('item_cheese'); 
var parsedItem = JSON.parse(retrievedItem); 
parsedItem.is_bought = true; 
// And save again in localStorage 
localStorage.setItem('item_cheese', JSON.stringify(parsedItem)); 
+0

1項目以上があるかどう独自のコードとどうなりますか? :) –

+0

ああ..すみません。私は質問を誤解した:) –

+0

あなたのフィードバックのために大変感謝します。しかし、どのように項目オブジェクトリストにデータを動的に入力することができますか? – Stephen