253 votes

Comment construire une chaîne de requête avec Javascript

Je me demande s'il y a quelque chose d'intégré à Javascript qui peut prendre un formulaire et retourner les paramètres de la requête, par exemple : "var1=value&var2=value2&arr[]=foo&arr[]=bar..."

Je me pose cette question depuis des années.

3voto

Thibaut Barrère Points 2865

Vous n'avez pas vraiment besoin d'un formulaire pour faire cela avec Prototype. Il suffit d'utiliser Fonction Object.toQueryString :

Object.toQueryString({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' })

// -> 'action=ship&order_id=123&fees=f1&fees=f2&label=a%20demo'

3voto

ajaykumar mp Points 248

Je sais que cette réponse est très tardive mais elle fonctionne très bien...

var obj = {
a:"a",
b:"b"
}

Object.entries(obj).map(([key, val])=>`${key}=${val}`).join("&");

note : object.entries retournera des paires clé-valeur.

La sortie de la ligne ci-dessus sera a=a&b=b

J'espère que cela aidera quelqu'un.

Joyeux codage...

2voto

Shyam Points 1984

Comme le dit Stein, vous pouvez utiliser la bibliothèque javascript prototype à partir de http://www.prototypejs.org . Inclure le JS et c'est très simple alors, $('formName').serialize() vous rendra ce que vous voulez !

2voto

Cugel Points 279

Pour ceux d'entre nous qui préfèrent jQuery, vous utiliserez le plugin de formulaire : http://plugins.jquery.com/project/form qui contient une méthode formSerialize.

1voto

SaraNa Points 7

Il est probablement trop tard pour répondre à votre question.
J'avais la même question et je n'aimais pas avoir à ajouter des chaînes de caractères pour créer une URL. J'ai donc commencé à utiliser $.param comme techhouse expliqué.
J'ai aussi trouvé un URI.js qui crée les URLs facilement pour vous. Il existe plusieurs exemples qui vous aideront : Documentation sur URI.js .
Voici l'un d'entre eux :

var uri = new URI("?hello=world");
uri.setSearch("hello", "mars"); // returns the URI instance for chaining
// uri == "?hello=mars"

uri.setSearch({ foo: "bar", goodbye : ["world", "mars"] });
// uri == "?hello=mars&foo=bar&goodbye=world&goodbye=mars"

uri.setSearch("goodbye", "sun");
// uri == "?hello=mars&foo=bar&goodbye=sun"

// CAUTION: beware of arrays, the following are not quite the same
// If you're dealing with PHP, you probably want the latter…
uri.setSearch("foo", ["bar", "baz"]);
uri.setSearch("foo[]", ["bar", "baz"]);`

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