jQuery parseJSON
À recevoir cette erreur ("JSON.analyser: caractère inattendu") lorsque j'essaie d'analyser un JSON validé chaîne. Il fonctionne parfaitement lorsque je supprime les caractères qui ont besoin d'échappés (style="width:400px;"). Ce qui me manque? Est-il un moyen unique de caractères d'échappement avant d'utiliser parseJSON?
var $cookieString = '{"youTabItems": { "youTab-001": <p style=\"width:400px;\">Welcome to my test</p>, "youTab-002": "test02Value", "youTab-003": "test03Value" }}';
var $myCookieString = $.parseJSON($cookieString);
logThis($myCookieString);
Mise à jour
J'ai été en mesure d'obtenir la majorité de ce travail, jusqu'à ce que j'ai commencé la sauvegarde /récupération de cookies. Maintenant, la coupe du contenu après le point-virgule...des idées sur ce point? Je suis à l'aide de 3 fonctions que j'ai trouvé sur quirsmode.com pour la fonctionnalité des cookies (voir ci-dessous).
function setCookie(name, value, days) { var date, expires; if (days) { date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = "; expires=" + date.toGMTString(); } else { expires = ""; } document.cookie = name + "=" + value + expires + "; path=/"; }
function getCookie(name) { var nameEQ = name + "=", ca = document.cookie.split(';'), c, i; for (i = 0; i < ca.length; i++) { c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return c.substring(nameEQ.length, c.length); } } return null; }
function eraseCookie(name) { setCookie(name, "", -1); }
var cookieObject = {"youTabItems": { "youTab-001": "<p style=\"width:400px;\">Welcome to my test</p>", "youTab-002": "test02Value", "youTab-003": "test03Value" }};
var cookieString = JSON.stringify($cookieVal);
setCookie('youTabItems', cookieString, 28);
- jsonlint.com est ton ami.
Vous devez vous connecter pour publier un commentaire.
Envelopper votre code html comme une chaîne de caractères pour faire le JSON valide.
Pourquoi doubles barres obliques?
La blackslash est le caractère d'échappement dans les chaînes de caractères JavaScript. Cela signifie que nous devons échapper elle-même à créer un littérale blackslash. Et nous avons besoin d'un backslash comme caractère d'échappement dans le JSON.
Exemple:
va créer la chaîne
qui est JSON valide. Si nous n'avions qu'une barre oblique inverse, il serait de créer
qui n'est pas valide.
Avis: Cela n'est nécessaire que parce que votre JSON est à l'intérieur d'un JavaScript chaîne. Si vous le servir par exemple comme une réponse HTTP, alors vous avez seulement besoin d'une barre oblique inverse. Mais tout ce que vous utilisez pour créer le JSON va s'échapper les guillemets automatiquement, donc vous ne devriez pas avoir à traiter avec cela.
Mise à jour
Une meilleure méthode pour stocker les données dans un cookie serait:
"
sera traitée comme la fin de la valeur."
que la fermeture de cette valeur. jsfiddle.net/vSwWg\\"
->\"
). Mais comme dit patrick, pourquoi ne pas créer un objet directement? Si vous servez le JSON à partir de quelque part d'autre (pas en JS chaîne), vous avez seulement besoin d'une barre oblique.JSON.stringify
, il devrait fonctionner: jsfiddle.net/fkling/Yz3DALe premier élément n'est pas entre guillemets:
est-il une valeur de chaîne? ensuite, il doit être cité