Je recherche un plugin jQuery qui peut obtenir des paramètres d'URL et prendre en charge cette chaîne de recherche sans générer l'erreur JavaScript: "séquence URI malformée". S'il n'y a pas de plugin jQuery qui le supporte, j'ai besoin de savoir comment le modifier pour le supporter.
?search=%E6%F8%E5
La valeur du paramètre URL, une fois décodée, doit être:
æøå
(les caractères sont norvégiens).
Je n'ai pas accès au serveur, donc je ne peux rien y changer.
javascript
url
query-string
url-parameters
Sindre Sorhus
la source
la source
decodeURIComponent()
. Les caractères norvégiens étaient très probablement encodés en utilisant quelque chose commeescape()
et changer l'decodeURIComponent()
appel enunescape()
devrait aider.Réponses:
la source
name = 'bar'
, je pense que cette expression régulière correspondrait'foobar=10'
et reviendrait'10'
. Vous pourriez peut-être ajouter'[?|&]'
au début de votre expression rationnelle. À votre santé!function getURLParameter(name) { var p = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search); if(!!p) { p = decodeURI(p[1]); } return p; }
Vous trouverez ci-dessous ce que j'ai créé à partir des commentaires ici, ainsi que la correction de bugs non mentionnés (tels que le retour de null et non 'null'):
la source
new
devant RegExp? Moins d'avertissements sur les peluches.Ce que vous voulez vraiment, c'est le plugin jQuery URL Parser . Avec ce plugin, obtenir la valeur d'un paramètre d'URL spécifique (pour l'URL actuelle) ressemble à ceci:
Si vous voulez un objet avec des noms de paramètres comme clés et des valeurs de paramètres comme valeurs, vous devez simplement appeler
param()
sans argument, comme ceci:Cette bibliothèque fonctionne également avec d'autres URL, pas seulement celle actuelle:
Comme il s'agit d'une bibliothèque d'analyse d'URL complète, vous pouvez également obtenir d'autres informations à partir de l'URL, comme le port spécifié, ou le chemin d'accès, le protocole, etc.:
Il a également d'autres fonctionnalités, consultez sa page d'accueil d' pour plus de documents et d'exemples.
Au lieu d'écrire votre propre analyseur d'URI dans ce but spécifique qui fonctionne un peu dans la plupart des cas, utilisez un analyseur d'URI réel. Selon la réponse, le code des autres réponses peut retourner
'null'
au lieu denull
, ne fonctionne pas avec des paramètres vides (?foo=&bar=x
), ne peut pas analyser et renvoyer tous les paramètres à la fois, répète le travail si vous interrogez plusieurs fois l'URL pour les paramètres, etc.Utilisez un analyseur URI réel, n'inventez pas le vôtre.
Pour ceux qui sont opposés à jQuery, il existe une version du plugin qui est purement JS .
la source
Si vous ne savez pas quels seront les paramètres d'URL et que vous souhaitez obtenir un objet avec les clés et les valeurs qui se trouvent dans les paramètres, vous pouvez utiliser ceci:
L'appel de getParameters () avec une URL comme
/posts?date=9/10/11&author=nilbus
retournerait:Je n'inclurai pas le code ici car il est encore plus éloigné de la question, mais weareon.net a publié une bibliothèque qui permet également la manipulation des paramètres dans l'URL:
la source
{"": undefined}
lorsque l'URL est vide de paramètres. Il est préférable de renvoyer un objet vide en utilisantif(searchString=='') return {};
directement après l'searchString
affectation.Vous pouvez utiliser la propriété native location.search du navigateur :
Mais il existe des plugins jQuery qui peuvent vous aider:
la source
Basé sur la réponse du 999 :
Changements:
decodeURI()
est remplacé pardecodeURIComponent()
[?|&]
est ajouté au début de l'expression rationnellela source
?a=&b=1
. Une meilleure expression rationnelle serait:"[?&]"+name+"=([^&]*)"
Besoin d'ajouter le paramètre i pour le rendre insensible à la casse:
la source
Après avoir lu toutes les réponses, je me suis retrouvé avec cette version avec + une deuxième fonction pour utiliser les paramètres comme drapeaux
la source
la source
Par exemple, une fonction qui renvoie la valeur d'une variable de paramètres.
Et voici comment vous pouvez utiliser cette fonction en supposant que l'URL est,
"http://example.com/?technology=jquery&blog=jquerybyexample".
Ainsi, dans la variable de code ci-dessus, "tech" aura "jQuery" comme valeur et la variable "blog" sera "jquerybyexample".
la source
Vous ne devez pas utiliser jQuery pour quelque chose comme ça!
La méthode moderne consiste à utiliser de petits modules réutilisables via un gestionnaire de packages comme Bower.
J'ai créé un petit module qui peut analyser la chaîne de requête dans un objet. Utilisez-le comme ceci:
la source
Il y a beaucoup de code bogué ici et les solutions d'expression régulière sont très lentes. J'ai trouvé une solution qui fonctionne jusqu'à 20 fois plus vite que l'homologue regex et est d'une simplicité élégante:
Regex n'est pas la solution globale, pour ce type de problème, la manipulation simple des chaînes peut fonctionner énormément plus efficacement. Source de code .
la source
getURLParameter(id)
ougetURLParameter(Id)
Fonctionne de la même manière:)la source
Extrait de code jQuery pour obtenir les variables dynamiques stockées dans l'URL en tant que paramètres et les stocker en tant que variables JavaScript prêtes à être utilisées avec vos scripts:
la source
la source
J'ai créé une fonction simple pour obtenir le paramètre URL en JavaScript à partir d'une URL comme celle-ci:
PRODUCTION:
18
la source
Juste au cas où vous auriez l'URL comme localhost / index.xsp? A = 1 # quelque chose et que vous devez obtenir le param pas le hachage.
la source
Légère modification de la réponse de @pauloppenheim, car elle ne traitera pas correctement les noms de paramètres qui peuvent faire partie d'autres noms de paramètres.
Par exemple: si vous avez des paramètres "appenv" et "env", la nouvelle valeur de "env" peut récupérer la valeur "appenv".
Réparer:
la source
Cela peut aider.
la source
?twothrids=text