1735 Stimmen

Holen Sie die Werte aus den "GET"-Parametern (JavaScript)

Ich habe eine URL mit einigen GET-Parametern wie folgt:

www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 

Ich muss den gesamten Wert von c erhalten. Ich habe versucht, die URL zu lesen, aber ich habe nur m2 erhalten. Wie mache ich das mit JavaScript?

9 Stimmen

Bevor Sie eine neue Antwort posten, bedenken Sie bitte, dass es bereits 50+ Antworten auf diese Frage gibt. Stellen Sie bitte sicher, dass Ihre Antwort Informationen enthält, die nicht unter den vorhandenen Antworten zu finden sind.

0 Stimmen

Var url_string = "example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href var url = new URL(url_string); var c = url.searchParams.get("c"); console.log(c);

1 Stimmen

Es ist verrückt, dass eine, was sollte sein, einfache Frage für JS 50+ Antworten erfordert :/

8voto

Ravi Patel Punkte 601

Für Einzelparameerwert wie z. B. index.html?msg=1 den folgenden Code verwenden,

$(window).load(function(){
    queryString();
});

function queryString()
{
    var queryString = window.location.search.substring(1);
    var varArray = queryString.split("="); //z. B. index.html?msg=1

    var param1 = varArray[0];
    var param2 = varArray[1];

}

Für Alle Parameter Werte verwenden Sie den folgenden Code,

$(window).load(function(){
    queryString();
});

function queryString()
{
    var queryString = window.location.search;
    var varArray = queryString.split("&");
    for (var i=0;i

1 Stimmen

Ich mag diese Lösung!

8voto

Waseem Khan Punkte 117

Ich hatte die Notwendigkeit, eine URL-GET-Variable zu lesen und eine Aktion basierend auf dem URL-Parameter abzuschließen. Ich habe hoch und niedrig nach einer Lösung gesucht und bin auf dieses kleine Stück Code gestoßen. Es liest im Grunde die aktuelle Seiten-URL, führt einige reguläre Ausdrücke auf der URL aus und speichert dann die URL-Parameter in einem assoziativen Array, auf das wir leicht zugreifen können.

Also, wenn wir beispielsweise die folgende URL mit dem JavaScript am Ende haben.

http://TestServer/Pages/NewsArchive.aspx?year=2013&Month=July

Alles, was wir tun müssten, um die Parameter id und page zu erhalten, wäre das hier aufzurufen:

Der Code wird sein:

var first = getUrlVars()["year"];
var second = getUrlVars()["Month"];

alert(first);
alert(second);
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
vars[key] = value;
});
return vars;
}

0 Stimmen

Ich verstehe nicht, warum du meine Bearbeitung deiner Antwort rückgängig gemacht hast. Aber du bist herzlich eingeladen, sie selbst zu verbessern :)

0 Stimmen

Funktioniert nicht für URLs wie -> ?action=api_call&dates[]=2022-01-28&dates[]=2022-02-03

8voto

Gus Punkte 6390

Oder wenn Sie das Rad für die URI-Parserung nicht neu erfinden möchten, verwenden Sie URI.js

Um den Wert eines Parameters mit dem Namen foo zu erhalten:

new URI((''+document.location)).search(true).foo

Was das macht, ist

  1. Wandeln Sie document.location in einen String um (es ist ein Objekt)
  2. Geben Sie diesen String an den URI.js URI-Klassenkonstruktor weiter
  3. Rufen Sie die search() Funktion auf, um den Such- (Query-) Abschnitt der URL abzurufen
    (die Angabe von true bewirkt das Ausgeben eines Objekts)
  4. Greifen Sie auf die foo-Eigenschaft des resultierenden Objekts zu, um den Wert zu erhalten

Hier ist ein Beispiel dafür.... http://jsfiddle.net/m6tett01/12/

8voto

equazcion Punkte 560

Noch ein Vorschlag.

Es gibt bereits einige gute Antworten, aber ich fand sie unnötig kompliziert und schwer zu verstehen. Dies ist kurz, einfach und gibt ein einfaches assoziatives Array zurück, wobei die Schlüsselnamen den Token-Namen in der URL entsprechen.

Ich habe unten eine Version mit Kommentaren hinzugefügt, für diejenigen, die lernen möchten.

Bitte beachten Sie, dass dies jQuery ($.each) für seine Schleife verwendet, was ich anstatt von forEach empfehle. Ich finde es einfacher, die Browserkompatibilität überall mit jQuery sicherzustellen, anstatt individuelle Fixes einzubauen, um welche neuen Funktionen auch immer zu unterstützen, die in älteren Browsern nicht unterstützt werden.

Bearbeitung: Nachdem ich dies geschrieben hatte, bemerkte ich die Antwort von Eric Elliott, die fast identisch ist, obwohl sie forEach verwendet, während ich im Allgemeinen dagegen bin (aus den oben genannten Gründen).

function getTokens(){
    var tokens = [];
    var query = location.search;
    query = query.slice(1);
    query = query.split('&');
    $.each(query, function(i,value){    
        var token = value.split('=');   
        var key = decodeURIComponent(token[0]);     
        var data = decodeURIComponent(token[1]);
        tokens[key] = data;
    });
    return tokens;
}

Kommentierte Version:

function getTokens(){
    var tokens = [];
    var query = location.search;
    query = query.slice(1);
    query = query.split('&');

    $.each(query, function(i,value){    

        var token = value.split('=');   

        var key = decodeURIComponent(token[0]);     

        var data = decodeURIComponent(token[1]);

        tokens[key] = data;
    });

    return tokens;
}

Für die folgenden Beispiele gehen wir von dieser Adresse aus:

http://www.example.com/page.htm?id=4&name=murray

Sie können die URL-Token Ihrer eigenen Variable zuweisen:

var tokens = getTokens();

Verwenden Sie dann jeden URL-Token mit dem Namen wie folgt:

document.write( tokens['id'] );

Dies würde "4" drucken.

Sie können auch einfach direkt auf einen Token-Namen aus der Funktion verweisen:

document.write( getTokens()['name'] );

...was "murray" drucken würde.

7voto

Khalil Mejdi Punkte 122

Es ist das N++ mal, dass ich nach einer sauberen Möglichkeit suche, das zu tun.
Werde es hier speichern, falls ich zurückkomme, denn ich weiß, dass ich es werde...

const parseUrlQuery = (value) => {
  var urlParams = new URL(value).searchParams
  return Array.from(urlParams.keys()).reduce((acc, key) => {
    acc[key] = urlParams.getAll(key)
    return acc
  }, {})
}

console.log(parseUrlQuery('http://url/path?param1=A¶m1=B¶m2=ABC¶m3=61569'))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X