Quelqu'un connaît-il un bon moyen d'écrire une extension jQuery pour gérer les paramètres de chaîne de requête? Je veux essentiellement étendre la ($)
fonction magique jQuery afin de pouvoir faire quelque chose comme ceci:
$('?search').val();
Ce qui me donnerait la valeur « test » dans l'URL suivante: http://www.example.com/index.php?search=test
.
J'ai vu beaucoup de fonctions qui peuvent faire cela dans jQuery et Javascript, mais je veux en fait étendre jQuery pour qu'il fonctionne exactement comme il est montré ci-dessus. Je ne recherche pas de plugin jQuery, je recherche une extension de la méthode jQuery.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
la source
la source
$
assez surchargé?Réponses:
Après des années d'analyse de chaînes horribles, il existe un meilleur moyen: URLSearchParams Voyons comment nous pouvons utiliser cette nouvelle API pour obtenir des valeurs à partir de l'emplacement!
MISE À JOUR: IE n'est pas pris en charge
utilisez cette fonction à partir d' une réponse ci-dessous au lieu de URLSearchParams
la source
Pourquoi étendre jQuery? Quel serait l'avantage d'étendre jQuery par rapport à une simple fonction globale?
http://jsfiddle.net/gilly3/sgxcL/
Une autre approche consisterait à analyser la chaîne de requête entière et à stocker les valeurs dans un objet pour une utilisation ultérieure. Cette approche ne nécessite pas d'expression régulière et étend l'
window.location
objet (mais pourrait tout aussi bien utiliser une variable globale):http://jsfiddle.net/gilly3/YnCeu/
Cette version utilise également
Array.forEach()
, qui n'est pas disponible nativement dans IE7 et IE8. Il peut être ajouté en utilisant l'implémentation chez MDN , ou vous pouvez utiliser jQuery à la$.each()
place.la source
name=value
paires, séparés par&
. Si votre code utilise un format de chaîne de requête personnalisé, vous devrez évidemment écrire un analyseur de chaîne de requête personnalisé partout où la chaîne de requête est consommée, que ce soit sur le serveur ou le client.GET
soumission de formulaire standard est codée commeapplication/x-www-form-urlencoded
, avec des valeurs séparées par&
. Mon code gère cette norme. Les structures d'URL personnalisées telles que celle que vous avez liée nécessiteront un analyseur personnalisé côté serveur et côté client. Quoi qu'il en soit, ajouter une telle capacité à mon code ci-dessus serait trivial.Le plugin JQuery jQuery-URL-Parser fait le même travail, par exemple pour récupérer la valeur du paramètre de chaîne de requête de recherche , vous pouvez utiliserCette bibliothèque n'est pas activement maintenue. Comme le suggère l'auteur du même plug - in, vous pouvez utiliser URI.js .
Ou vous pouvez utiliser js-url à la place. C'est assez similaire à celui ci-dessous.
Ainsi, vous pouvez accéder au paramètre de requête comme
$.url('?search')
la source
file://
protocole empêchera beaucoup plus de choses de fonctionner. Vous pouvez créer un serveur HTML statique très rapide et simple avec node.js. stackoverflow.com/questions/16333790/…J'ai trouvé ce bijou de nos amis sur SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Utilisation de PURE jQuery. Je viens de l'utiliser et cela a fonctionné. Je l'ai un peu modifié par exemple pour le saké.
Utilisez comme vous voudrez.
la source
results[1] || 0
, vous devez faire if (results) {return results [1]} return 0; Les paramètres de requête bcoz peuvent ne pas être présents du tout. Et la modification gérera tous les cas génériques.https://example.com/?c=Order+ID
? Ce signe plus reste toujours sur cette fonction.Ce n'est pas mon exemple de code, mais je l'ai utilisé dans le passé.
la source
J'ai écrit une petite fonction où vous n'avez qu'à analyser le nom du paramètre de requête. Donc, si vous avez:? Project = 12 & Mode = 200 & date = 2013-05-27 et que vous voulez le paramètre 'Mode', il vous suffit d'analyser le nom 'Mode' dans la fonction:
la source
En s'appuyant sur la réponse de @Rob Neild ci-dessus, voici une pure adaptation JS qui renvoie un objet simple de paramètres de chaîne de requête décodés (pas de% 20, etc.).
la source
""
. Et vous obtenez {"": "undefined"}Écrit en Javascript vanille
la source
J'utilise ça.
la source