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.
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 :/