Question

    

Cette question a déjà une réponse ici:

         

Si je suis sur une page telle que

http://somesite.com/somepage.php?param1=asdf

Dans le code JavaScript de cette page, j'aimerais définir une variable sur la valeur du paramètre dans la partie GET de l'URL.

Donc en JavaScript:

<script>
   param1var = ...   // ... would be replaced with the code to get asdf from URI
</script>

Qu'est-ce qui serait " ... " être?

Était-ce utile?

La solution

Voici quelques exemple de code pour cela.

<script>
var param1var = getQueryVariable("param1");

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];
    }
  } 
  alert('Query Variable ' + variable + ' not found');
}
</script>

Autres conseils

Vous pouvez obtenir le " recherche " une partie de l'objet de localisation, puis l'analyser.

var matches = /param1=([^&#=]*)/.exec(window.location.search);
var param1 = matches[1];

J'ai fait cette variante de la solution de gnarf. L'appel et le résultat sont similaires à PHP:

function S_GET(id){
    var a = new RegExp(id+"=([^&#=]*)");
    return decodeURIComponent(a.exec(window.location.search)[1]);
}

Mais comme l'appel d'une fonction ralentit le processus, il vaut mieux l'utiliser en tant que global:

fenêtre [' nom_var '] = decodeURIComponent (/ var_in_get = ([^ & amp ; # =] *) /. exec (window.location.search) [1]);

MISE À JOUR

Alors que j'apprenais encore JS, j'ai créé une meilleure réponse dans un comportement plus JS:

Url = {
    get get(){
        var vars= {};
        if(window.location.search.length!==0)
            window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
                key=decodeURIComponent(key);
                if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);}
                else {vars[key]= [].concat(vars[key], decodeURIComponent(value));}
            });
        return vars;
    }
};

Ceci permet d’être appelé simplement en utilisant Url.get .

Exemple L'URL ? Param1 = param1Value & amp2; param2 = param2Value peut être appelé comme:

Url.get.param1 //"param1Value"
Url.get.param2 //"param2Value"

voici un snipet:

// URL GET params
url = "?a=2&a=3&b=2&a=4";

Url = {
    get get(){
        var vars= {};
        if(url.length!==0)
            url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value){
                key=decodeURIComponent(key);
                if(typeof vars[key]==="undefined") {vars[key]= decodeURIComponent(value);}
                else {vars[key]= [].concat(vars[key], decodeURIComponent(value));}
            });
        return vars;
    }
};

document.querySelector('log').innerHTML = JSON.stringify(Url.get);
<log></log>

À partir de mon archive de programmation:

function querystring(key) {
   var re=new RegExp('(?:\\?|&)'+key+'=(.*?)(?=&|$)','gi');
   var r=[], m;
   while ((m=re.exec(document.location.search)) != null) r[r.length]=m[1];
   return r;
}

Si la valeur n'existe pas, un tableau vide est renvoyé.
Si la valeur existe, un tableau contenant un élément, la valeur, est renvoyé.
Si plusieurs valeurs portant le nom existent, un tableau contenant chaque valeur est renvoyé.

Exemples:

var param1var = querystring("param1")[0];

document.write(querystring("name"));

if (querystring('id')=='42') alert('We apoligize for the inconvenience.');

if (querystring('button').length>0) alert(querystring('info'));

Voici comment vous pouvez le faire dans Coffee Script (juste si quelqu'un est intéressé).

decodeURIComponent( v.split( "=" )[1] ) if decodeURIComponent( v.split( "=" )[0] ) == name for v in window.location.search.substring( 1 ).split( "&" )

Utilisation de jquery? J'ai déjà utilisé cela: http://projects.allmarkedup.com/jquery_url_parser/ et le reste a plutôt bien fonctionné.

Cela avait l'air correct:

function gup( name ){
   name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
   var regexS = "[\\?&]"+name+"=([^&#]*)";
   var regex = new RegExp( regexS );
   var results = regex.exec( window.location.href );
   if( results == null )
      return "";
   else
      return results[1];
}

De http://www.netlobo.com/url_query_string_javascript.html

Voici une version appréciée par JSLint:

/*jslint browser: true */
var GET = {};
(function (input) {
    'use strict';
    if (input.length > 1) {
        var param = input.slice(1).replace(/\+/g, ' ').split('&'),
            plength = param.length,
            tmp,
            p;

        for (p = 0; p < plength; p += 1) {
            tmp = param[p].split('=');
            GET[decodeURIComponent(tmp[0])] = decodeURIComponent(tmp[1]);
        }
    }
}(window.location.search));

window.alert(JSON.stringify(GET));

Ou si vous avez besoin de plusieurs valeurs pour une clé, comme par exemple. ? key = valeur1 & amp; clé = valeur2 vous pouvez utiliser ceci:

/*jslint browser: true */
var GET = {};
(function (input) {
    'use strict';
    if (input.length > 1) {
        var params = input.slice(1).replace(/\+/g, ' ').split('&'),
            plength = params.length,
            tmp,
            key,
            val,
            obj,
            p;

        for (p = 0; p < plength; p += 1) {
            tmp = params[p].split('=');
            key = decodeURIComponent(tmp[0]);
            val = decodeURIComponent(tmp[1]);
            if (GET.hasOwnProperty(key)) {
                obj = GET[key];
                if (obj.constructor === Array) {
                    obj.push(val);
                } else {
                    GET[key] = [obj, val];
                }
            } else {
                GET[key] = val;
            }
        }
    }
}(window.location.search));

window.alert(JSON.stringify(GET));

Vous pouvez utiliser cette fonction

function getParmFromUrl(url, parm) {
    var re = new RegExp(".*[?&]" + parm + "=([^&]+)(&|$)");
    var match = url.match(re);
    return(match ? match[1] : "");
}

Si vous utilisez déjà une page php, alors

bit php:

    $json   =   json_encode(

Si vous utilisez déjà une page php, alors

bit php:

    var param1var = getVars.param1var;

js bit:

<*>

Mais pour les pages html, la solution de Jose Basilio me convient bien.

Bonne chance!

REQUEST, JSON_FORCE_OBJECT); print "<script>var getVars = $json;</script>";

js bit:

<*>

Mais pour les pages html, la solution de Jose Basilio me convient bien.

Bonne chance!

En fait, vous n'avez rien de spécial à faire. Vous pouvez combiner JavaScript et PHP pour obtenir des variables PHP directement dans JavaScript.

var param1val = '<?php echo 

En fait, vous n'avez rien de spécial à faire. Vous pouvez combiner JavaScript et PHP pour obtenir des variables PHP directement dans JavaScript.

<*>GET['param1'] ?>';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top