jquery obtient la chaîne de requête à partir de l'URL

J'ai l'URL suivante :

http://www.mysite.co.uk/?location=mylocation1

Ce dont j'ai besoin est de récupérer la valeur de location de l'URL dans une variable et de l'utiliser ensuite dans un code jQuery :

var thequerystring = "getthequerystringhere"

$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);

Quelqu'un sait-il comment récupérer cette valeur en utilisant JavaScript ou jQuery ?

Solution

De : http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

Voici ce dont vous avez besoin :)

Le code suivant renverra un objet JavaScript contenant les paramètres de l'URL :

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

Par exemple, si vous avez l'URL :

http://www.example.com/?me=myValue&name2=SomeOtherValue

Ce code renverra :

{
    "me"    : "myValue",
    "name2" : "SomeOtherValue"
}

et vous pouvez le faire :

var me = getUrlVars()["me"];
var name2 = getUrlVars()["name2"];
Commentaires (12)

Un moyen facile de le faire avec un peu de jQuery et de JS direct, il suffit de visualiser votre console dans Chrome ou Firefox pour voir la sortie ...

  var queries = {};
  $.each(document.location.search.substr(1).split('&'),function(c,q){
    var i = q.split('=');
    queries[i[0].toString()] = i[1].toString();
  });
  console.log(queries);
Commentaires (6)

Jetez un coup d'œil à cette [réponse de stackoverflow][1].

 function getParameterByName(name, url) {
     if (!url) url = window.location.href;
     name = name.replace(/[\[\]]/g, "\\$&");
     var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
         results = regex.exec(url);
     if (!results) return null;
     if (!results[2]) return '';
     return decodeURIComponent(results[2].replace(/\+/g, " "));
 }

Vous pouvez utiliser la méthode pour animer :

ie :

var thequerystring = getParameterByName("location");
$('html,body').animate({scrollTop: $("div#" + thequerystring).offset().top}, 500);

[1] : https://stackoverflow.com/questions/901115/get-querystring-values-with-jquery/901144#901144

Commentaires (0)