Billet du blogue

Parser la query string en Javascript

Une petite fonction bien pratique pour parser la query string de la page actuelle (source).

/**
 * Retourne la valeur d'un paramètre de la query string
 *
 * @param  string Le nom du paramètre
 * @return string La valeur du paramètre
 */
function getQueryVariable(variable){
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split("=");
      if (pair[0] == variable) {
        return pair[1];
      }
  }
  return null;
}

On peut ensuite utiliser la fonction comme cela :

// Dans cet exemple, la page actuelle est /index.php?section=10
alert('Nous sommes à la section : ' + getQueryVariable('section')); // 10

Alternaitvement, on peut accéder à la portion hash (ou anchor) d’un URI (cela peut-être utilisé pour créer une navigation en AJAX qui permet d’utiliser les fonctions Page précédente et Page suivante du navigateur) avec la variable globale window.location.hash.

Posté le et modifié le 18 février 2008 à 11:02 avec les tags: .

Commentaires fermés

Les commentaires pour ce billet ont été désactivés un mois après la date de publication de ce-dernier. Vous désirez exprimer votre opinion sur ce billet malgré le fait que les commentaires aient été désactivés ? Utilisez le formulaire de contact.


Fil atom des commentaires de ce billet2 commentaires

  • Ce qui serait bien c’est d’améliorer cette fonction en ajoutant une sorte de cache de maniere à ne pas reparser l’url à chaque fois (si on a une dizaine de paramètres ou qu’on utilise beaucoup cette fonction dans une meme page, ca peut « ralentir » un peu son execution, encore que ca ne doit pas être bloquant non plus !). Il faudrait construire un objet statique au sein de la fonction qui serait initié que la premiere fois et apres, on ne lit que les propriétés. Merci tout de meme pour ce code qui donne des pistes pour ce que je viens de dire.

    David Duret (19 février 2008 à 11:53 EST)

  • Je viens de poster un bout de code qui fait exactement ça. Merci pour l’idée! :)

    Rémi Prévost (19 février 2008 à 12:56 EST)