151 votes

Comment échapper à une chaîne JSON de l’avoir dans une URL ?

À l'aide de Javascript, je veux générer un lien vers une page. Les paramètres de la page dans un tableau Javascript que je sérialiser en JSON.

Donc, je tiens à générer une URL comme ça :

http://example.com/?data="MY_JSON_ARRAY_HERE"

Comment ai-je besoin pour échapper à ma chaîne JSON (tableau sérialisé) de l'inclure comme un paramètre dans une URL ?

Si il y a une solution à l'aide de JQuery je l'aime.

Note: Oui, les paramètres de la page doivent être dans un tableau car il ya beaucoup d'entre eux. Je pense que je vais utiliser peu.ly pour raccourcir les liens par la suite.

251voto

Delan Azabani Points 33013
encodeURIComponent(JSON.stringify(object_to_be_serialised))

25voto

jcj80 Points 111

Je cherchais à faire la même chose. problème pour moi, c'était mon url devenait trop long. J'ai trouvé une solution, aujourd'hui, à l'aide de Bruno Jouhier de l'jsUrl.js bibliothèque

https://raw.github.com/Sage/jsurl/

Je n'ai pas testé à fond encore. Cependant, voici un exemple montrant le caractère longueurs de la chaîne de production après le codage de la même objet à l'aide de 3 types méthodes:

  • 2651 caractères à l'aide de jQuery.param
  • 1691 caractères à l'aide de JSON.stringify + encodeURIComponent
  • 821 caractères à l'aide de JSURL.stringify

clairement JSURL a le plus optimisé format pour l'encodage d'un objet js.

le fil à https://groups.google.com/forum/?fromgroups=#!topic/nodejs/ivdZuGCF86Q montre repères pour l'encodage et l'analyse.

Remarque: Après le test, il ressemble à jsurl.js la bibliothèque utilise ECMAScript 5 fonctions de l'Objet.touches, Tableau.carte et Tableau.le filtre. Par conséquent, il ne fonctionne que sur les navigateurs modernes (pas de ie 8 et moins). Toutefois, sont polyfills pour ces fonctions qui le rendent compatible avec plusieurs navigateurs.

20voto

Darin Dimitrov Points 528142

Vous pouvez utiliser le `` pour en toute sécurité URL l'encoder parties d’une chaîne de requête :

ou si vous n’envoyez pas ceci comme une requête AJAX :

11voto

genesis Points 32591

Utilisation de encodeURIComponent() :

 var url = 'index.php?data='+encodeURIComponent(JSON.stringify({"json":[{"j":"son"}]})),
 

0voto

foxybagga Points 1345

Réponse donnée par Denis est parfaite. Tout en ajoutant-encas quelqu'un veut nommer les paramètres ou passer plusieurs chaînes JSON séparément - le code ci-dessous pourrait aider !

JQuery

PHP

J’espère que cela aide !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X