Je sais que cela a été demandé à quelques reprises, mais s'il vous plaît ours avec moi.convertir objet JSON à la chaîne de requête, puis de nouveau à un objet
J'ai un objet google maps qui est plutôt complexe (il contient divers nœuds, coordonnées, etc) et j'essaye de le passer comme une chaîne de requête.
J'ai besoin d'une solution play javascript/jQuery.
J'ai essayé la méthode .param qui donne une erreur jQuery. La seule chose qui fonctionne est la méthode "stringify" qui crée ensuite une chaîne qui, lorsqu'elle apparaît sous forme d'URL, ressemble à ceci:% 7B% 5C "shape_1% 5C"% 3A% 7B% 5C "couleur% 5C"% 3A % 5C "% 237F0000% 5C"% 2C% 5C "données% 5C"% 3A% 7B% 5C "b% 5C"% 3A% 5B% 7B% 5C "Na% 5C"% 3A51.56727431757122% 2C% 5C " Oa% 5C "% 3A-0,10462402858888709% 7D% 2C ....
php traduit que: {\\" \\ shape_1 ": {\\" couleur \\ ": \\" # 7f0000 \ \ ", \\" données \\ ": {\\" b \\ ": [{\\" Na \\ ": 51.56727431757122, \\" Oa \\ ": - 0.10462402858888709}, ...
mais ayant dit que je ne veux pas utiliser PHP, je vous montre juste ce qu'il fait au cas où il vous aiderait à voir ce que stringify a fait à l'objet.
Après échappement d'avec Javascript il semble un peu plus normal comme:
{\ "shape_1 \": {\ "color \": \ "# 7f0000 \", \ "data \": {\ "b \": [{\ "Na \": 51.56727431757122, \ "Oa \": - 0.10462402858888709}, ..
Ainsi que vous pouvez le voir, la séquence non échappée a ces barres partout. Lorsque j'essaie d'évaluer cela dans un objet JSON, j'obtiens un "jeton Illégal". La méthode d'analyse échoue également. Je ne trouve aucun moyen de remettre cette chaîne dans l'objet JSON complexe qu'elle était. J'ai regardé en ligne pour diverses suggestions, mais ils échouent. Je ne comprends pas non plus pourquoi stringify injecte toutes ces barres obliques qui ne devraient tout simplement pas être là. Si quelqu'un a une idée sur la façon de prendre cet objet, placez-le dans une chaîne de requête, puis répétez-le, je vous serais très reconnaissant.
Nick
Mise à jour: La réponse est la suivante:
encodeURIComponent(JSON.stringify(myObject));
Et puis sur la réception:
var a = querySt("data");
var b = decodeURIComponent(a);
var c = unescape(b);
var d = JSON.parse(c);
ou en une seule ligne
JSON.parse(unescape(decodeURIComponent(querySt("data"))));
Nick
J'éviterais d'essayer de mettre JSON dans les chaînes de requête si cela est possible. Avec une quantité modeste de données, vous pouvez assez facilement rencontrer des limites de longueur. –
Pouvez-vous peut-être penser à un moyen de transmettre ces coordonnées d'un formulaire à un e-mail et de l'e-mail à une autre page html? – Nick
Que voulez-vous dire en passant des coordonnées d'un formulaire à un courriel? Voulez-vous envoyer un e-mail contenant les coordonnées? Et puis envoyer un autre courriel qui crée une page HTML? –