Existe-t-il une bibliothèque JavaScript qui crée un dictionnaire à partir de la chaîne de requête, ASP.NET
style?
Quelque chose qui peut être utilisé comme:
var query = window.location.querystring["query"]?
La "chaîne de requête" est-elle appelée autre chose en dehors du .NET
royaume? Pourquoi n'est-il pas location.search
divisé en une collection de clés / valeurs ?
EDIT : J'ai écrit ma propre fonction, mais est-ce qu'une bibliothèque JavaScript majeure le fait?
javascript
query-string
coeur
la source
la source
Réponses:
Peut-être http://plugins.jquery.com/query-object/ ?
C'est la fourchette https://github.com/sousk/jquery.parsequery#readme .
la source
Vous pouvez extraire les paires clé / valeur de la propriété location.search , cette propriété a la partie de l'URL qui suit le? symbole, y compris le? symbole.
la source
dork.com/?equation=10=2
...?val=foo&val=bar&val=baz
comment pouvez-vous gérer cela?val=foo&val=bar&val=baz
; ça devrait êtreval[]=foo&val[]=bar&val[]=baz
%20
's, alors j'ai remplacéresult[keyValuePair[0]] = keyValuePair[1] || '';
parresult[keyValuePair[0]] = decodeURIComponent((keyValuePair[1]+'').replace(/\+/g, '%20')) || '';
tl; dr solution sur une seule ligne (ish) de code en utilisant du javascript vanille
Pour la chaîne de requête,
?a=1&b=2&c=3&d&e
il renvoie:clés à valeurs multiples et caractères codés ?
Voir la réponse originale sur Comment puis-je obtenir des valeurs de chaîne de requête en JavaScript?
la source
Après avoir trouvé ce post, en me regardant, j'ai pensé que je devrais ajouter que je ne pense pas que la solution la plus votée soit la meilleure. Il ne gère pas les valeurs de tableau (comme? A = foo & a = bar - dans ce cas, je m'attendrais à ce que un retourne ['foo', 'bar']). Autant que je sache, il ne prend pas non plus en compte les valeurs codées - comme le codage de caractères hexadécimaux où% 20 représente un espace (exemple:? A = Hello% 20World) ou le symbole plus utilisé pour représenter un espace (exemple :? a = Bonjour + Monde).
Node.js offre ce qui ressemble à une solution très complète pour l'analyse des chaînes de requêtes. Il serait facile à retirer et à utiliser dans votre propre projet car il est assez bien isolé et sous licence permissive.
Le code correspondant peut être consulté ici: https://github.com/joyent/node/blob/master/lib/querystring.js
Les tests que Node a peuvent être vus ici: https://github.com/joyent/node/blob/master/test/simple/test-querystring.js Je suggérerais d'essayer certains d'entre eux avec la réponse populaire pour voir comment cela les gère.
Il y a aussi un projet dans lequel j'ai été impliqué pour ajouter spécifiquement cette fonctionnalité. Il s'agit d'un portage du module d'analyse de chaîne de requête de la bibliothèque standard Python. Ma fourche se trouve ici: https://github.com/d0ugal/jquery.qeeree
la source
Ou vous pouvez utiliser la bibliothèque sugar.js .
De sugarjs.com:
Exemple:
la source
Si vous avez la chaîne de requête sous la main, utilisez ceci:
la source
la source
decodeURIComponent
manquez au moins les chaînes extraites.decodeURIComponent
stand, cependant.Il est à noter que la bibliothèque mentionnée par John Slegers a une dépendance jQuery, mais voici une version qui est Javascript vanille.
https://github.com/EldonMcGuinness/querystring.js
J'aurais simplement commenté son message, mais je n'ai pas la réputation de le faire. : /
Exemple:
L'exemple ci-dessous traite la chaîne de requête suivante, quoique irrégulière:
la source
Le code
This Gist par Eldon McGuinness est de loin l'implémentation la plus complète d'un analyseur de chaîne de requête JavaScript que j'ai vu jusqu'à présent.
Malheureusement, il est écrit comme un plugin jQuery.
Je l'ai réécrit en vanilla JS et j'ai apporté quelques améliorations:
Comment l'utiliser
Production
Voir aussi ce violon .
la source
la source
J'aime le garder simple, lisible et petit.
Exemple:
la source
Fonction que j'ai écrite pour une exigence similaire à celle-ci avec une manipulation de chaîne javascript pure
Usage:
la source
?
c'est fondamentalement la même chose que les deux réponses ci-dessus?Si vous utilisez lodash + ES6, voici une solution en une seule ligne:
_.object(window.location.search.replace(/(^\?)/, '').split('&').map(keyVal => keyVal.split('=')));
la source
D'accord, puisque tout le monde ignore ma vraie question, hé, je posterai la mienne aussi! Voici ce que j'ai:
Et les tests:
Rappelez-vous que vous avez pensé, JavaScript n'est pas ma langue maternelle.
Quoi qu'il en soit, je recherche une bibliothèque JavaScript (par exemple jQuery, Prototype) qui en a déjà une écrite. :)
la source
En m'appuyant sur la réponse de @CMS, j'ai ce qui suit (dans CoffeeScript qui peut facilement être converti en JavaScript):
Vous pouvez facilement saisir ce dont vous avez besoin avec:
La victoire ici est une interface orientée objet (au lieu de fonctionnelle) et cela peut être fait sur n'importe quelle chaîne (pas seulement location.search).
Si vous utilisez déjà une bibliothèque JavaScript, cette fonction existe déjà. Par exemple, voici la version de Prototype
la source