2010-12-07 4 views
4

J'ai un tableau JSON qui est défini comme suit:Tableau Stockage JSON dans un élément HTML caché

var myItems = { 
    "data": [ 
    { "id":1, "firstName":"bill", "lastName":"smith" }, 
    { "id":2, "firstName":"john", "lastName":"apple" }, 
    { "id":3, "firstName":"will", "lastName":"long"} 
    ] 
}; 

J'ai besoin de stocker ce tableau dans un élément HTML masqué pour que je puisse le transmettre à mon server- code latéral en format de chaîne. Mon problème, je ne suis pas sûr de savoir comment faire cela. Est-ce que quelqu'un peut me dire comment faire ça?

Merci!

Répondre

6

Essentiellement, vous voulez serialize your array into json, puis spécifiez l'emplacement où vous voulez stocker la valeur de chaîne résultante ..

document.getElementById('yourHiddenField').value = jsonString; 
1

Qu'est-ce que vous avez est un objet littéral, pas encore JSON ... mais nous pouvons facilement convertir en JSON en utilisant JSON.stringify(), comme ceci:

document.getElementById("myHiddenInput").value = JSON.stringify(myItems); 

Pour prendre en charge les anciens navigateurs sans support JSON natif (IE < 8), include json2.js et le code ci-dessus fonctionnera toujours.

+0

.... en supposant que OP utilise jQuery – Dutchie432

+0

@ Dutchie432 - woops, mal lu l'étiquette json, l'approche est presque identique si, mis à jour. –

2

Utilisez ce code:

document.getElementById('input').value = JSON.stringify(myItems); 

Voir ici pour la documentation JSON:

REMARQUE: Tous les navigateurs offrent à moderns support moins partielle pour l'analyse syntaxique JSON native (JSON.parse() et JSON.stringify(). Les anciens navigateurs ne le font pas. As suggested by Nick Craver, vous pouvez utiliser json2.js pour cela, et la plupart des frameworks JavaScript fournissent également un support (et la plupart essaieront de détecter les fonctions natives ou d'utiliser leurs propres versions). Par exemple Dojo.toJson() de Dojo et Dojo.toJson().

+0

Les ID ne devraient pas commencer par un '#', et cela ne fonctionnera pas dans les anciens navigateurs ... cela a été posté il y a 8 minutes aussi :) –

+0

@Nick: oui et je disais que non (ou j'étais en le tapant à l'heure). Je l'ai même mis à jour plus tard pour vous donner le crédit de la solution json2.js. – haylem

Questions connexes