Comment stringify JSON, JavaScript array
Mon formulaire en html, DOM est une case à cocher pour la souris (il peut y en avoir plusieurs). Le problème se produit dans la chaîne de description lorsque j'ai jamais utiliser une apostrophe, car ma liste d'objet est unique-devis deliniated. C'est l'une des cases à cocher dans le formulaire:
<input type="checkbox" id="cbx" name="cbx" value="{'getPic': 'url', 'picsrc': 'http://lh3.ggpht.com/_ZB3cttqooN0/SVmJPfusGWI/AAAAAAAADvA/GuIRgh6eMOI/Grand%20Canyon%201213_121508214.JPG', 'pos': None, 'description': 'Here's what it REALLY looks like at 5:30am! Bring your headlight!'}">
Le javascript qui lit les valeurs de l'coché les cases à cocher et les pousse dans un tableau (liste):
var pylist = [];
for (i=0; i<document.picList.cbx.length; i++) {
if (document.picList.cbx[i].checked) {
pylist.push( document.picList.cbx[i].value );
}
}
var getstr = JSON.stringify(pylist);
Le problème est toujours que getstr à ce point a coupé tout après le guillemet simple dans la description de la propriété.
J'ai essayé différentes manières de s'y soustraire sans grand succès.
- Pour référence, ce n'est pas JSON valide. Les cordes doivent être entre guillemets, et tout décemment conforme sérialiseur JSON va le faire.
Vous devez vous connecter pour publier un commentaire.
Le problème est que la valeur de la case est déjà une chaîne JSON. Une solution serait d'appeler le JSON.parse() sur la valeur:
J'ai couru dans la même question - nous nous en tenons json dans un champ caché, donc nous n'avons pas à interroger le serveur sur chaque page. Nous remplacer les apostrophes par un "code" avant de les mettre dans le html - nous avons ajouté une fonction javascript qui remplace le code par une apostrophe.
Vraiment hacky, mais il fonctionne vraiment bien. Bien sûr, nous avons une place dans le code json à partir du serveur et un endroit où le javascript doit analyser - si vous trouvez que vous êtes en répétant les méthodes tout au long de votre code, votre kilométrage peut varier.