Frage

    

Diese Frage bereits eine Antwort hier:

         

Wenn ich auf einer Seite wie

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

Im JavaScript dieser Seite, würde Ich mag eine Variable auf den Wert des Parameters in dem GET-Teil der URL setzen.

So in JavaScript:

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

Was wäre "..." sein?

War es hilfreich?

Lösung

Hier ist ein Beispielcode für das.

<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>

Andere Tipps

können Sie erhalten den Teil des Standortobjekts „suchen“ - und dann analysieren,

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

Ich habe diese Variation von gnarf-Lösung, so dass der Ruf und das Ergebnis ist ähnlich wie PHP:

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

Aber wie in einer Funktion aufgerufen wird, um den Prozess verlangsamt, ist es besser, als global zu verwenden:

window[' var_name '] = decodeURIComponent( / var_in_get =([^&#=]*)/.exec(window.location.search)[1] );

UPDATE

Wie ich JS noch lernen, habe ich eine bessere Antwort in einem JS Verhalten:

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;
    }
};

Auf diese Weise kann nur mit Url.get aufgerufen werden.

Beispiel Die URL ?param1=param1Value&param2=param2Value kann wie genannt werden:

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

Hier ist ein 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>

Aus meiner Programmierung Archiv:

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;
}

Wenn der Wert nicht vorhanden ist, wird ein leeres Array zurückgegeben.
Wenn der Wert vorhanden ist, ist ein Array zurück, das ein Element hat, den Wert.
Wenn mehrere Werte mit dem Namen existiert, ist ein Array jeden Wert enthält, zurückgeführt wird.

Beispiele:

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'));

Hier ist, wie Sie es in Coffee Script tun könnte (nur wenn jemand interessiert ist).

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

Mit jquery? Ich habe das vorher verwendet: http://projects.allmarkedup.com/jquery_url_parser/ und ziemlich gut funktioniert.

Das sah ok:

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];
}

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

Hier ist eine Version, die JSLint mag:

/*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));

oder wenn Sie mehrere Werte für einen Schlüssel, wie zB unterstützen. ? Key = Wert1 & key = value2 Sie diese verwenden können:

/*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));

Sie können diese Funktion verwenden,

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

Wenn Sie bereits eine PHP-Seite dann laufen

php-Bit:

    $json   =   json_encode($_REQUEST, JSON_FORCE_OBJECT);
    print "<script>var getVars = $json;</script>";

js Bit:

    var param1var = getVars.param1var;

Aber für HTML-Seiten Jose Basilio Lösung sieht für mich gut.

Viel Glück!

Sie müssen nichts Besonderes tun, eigentlich. Sie können mischen JavaScript und PHP zusammen Variablen von PHP direkt in JavaScript zu erhalten.

var param1val = '<?php echo $_GET['param1'] ?>';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top