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:
$.url().param('foo');
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:
$.url().param();
Cette bibliothèque fonctionne également avec d'autres URL, pas seulement celle actuelle:
$.url('http://allmarkedup.com?sky=blue&grass=green').param();
$('#myElement').url().param(); // works with elements that have 'src', 'href' or 'action' attributes
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.:
var url = $.url('http://allmarkedup.com/folder/dir/index.html?item=value');
url.attr('protocol'); // returns 'http'
url.attr('path'); // returns '/folder/dir/index.html'
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 de null
, 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 .
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.