149 votes

Sérialiser l'objet pour interroger la chaîne en JavaScript / jQuery

J'essaie de trouver des informations sur la façon de sérialiser un objet pour interroger le format de chaîne, mais toutes mes recherches sont noyées dans des résultats sur la manière de faire autrement (chaîne / form / quelque chose à JSON).

j'ai

 { one: 'first', two: 'second' }
 

et je veux

 ?one=first&two=second
 

Y at-il un bon moyen de le faire? Cela ne me dérange pas les plugins ou whatnots - si le code que je trouve n'est pas un plugin, je vais probablement le réécrire de toute façon ...

229voto

Chris Laplante Points 18060

Vous souhaitez $.param(): http://api.jquery.com/jQuery.param/

Plus précisément, vous voulez ce:

var data = { one: 'first', two: 'second' };
var result = decodeURIComponent($.param(data));

Le decodeURIComponent fonction recherche la chaîne pour les séquences d'échappement et les remplace par le caractère réel.

Quand quelque chose comme cela:

{a: 1, b : 23, c : "te!@#st"}

$.param sera de retour ce:

a=1&b=23&c=te!%40%23st

Si vous ne voulez pas les séquences d'échappement, decodeURIComponent est utilisé. Le résultat, à l'aide de ma suggestion, c'est ceci:

a=1&b=23&c=te!@#st

Pure, $.param est sans danger pour quand vous n'avez pas de caractères tels que + et ? dans vos données. Sinon, utiliser la deuxième version. J'espère que a clarifié les choses.

15voto

wprl Points 6139

Une autre option pourrait être la chaîne de requête de noeud .

Il est disponible à la fois en npm et bower , raison pour laquelle je l'utilise.

4voto

Alex Stetsenko Points 126

Sinon, YUI a http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify .

Par exemple:

 var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);
 

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