785 Stimmen

Wie man URL-Parameter mit jQuery oder reinem JavaScript abruft?

Ich habe viele jQuery-Beispiele gesehen, bei denen Größe und Name des Parameters unbekannt sind.

Meine URL wird immer nur eine Zeichenfolge haben:

http://beispiel.com?sent=yes

Ich möchte nur erkennen:

  1. Existiert sent?
  2. Ist es gleich "yes"?

49voto

Xin Punkte 27823

Verwendung von URLSearchParams:

var params = new window.URLSearchParams(window.location.search);
console.log(params.get('name'));

Vorsicht bei der Kompatibilität (meistens ist es in Ordnung, aber bei IE und Edge kann es anders sein, überprüfen Sie diese für eine kompatible Referenz: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)

48voto

Sariban D'Cl Punkte 2095

Vielleicht ist es schon zu spät. Aber diese Methode ist sehr einfach und simpel

$(function(){
    $.url.attr('protocol')  // --> Protocol: "http"
    $.url.attr('path')      // --> host: "www.example.com"
    $.url.attr('query')         // --> path: "/correct/"
    $.url.attr('message')       // --> query: "done"
    $.url.attr('year')      // --> query: "1990"
});
</code></pre>

<p><strong>UPDATE</strong><br/>
Benötigt das URL-Plugin: <a href="https://plugins.jquery.com/url/">plugins.jquery.com/url</a><br/>
Dank -Ripounet</p></x-turndown>

41voto

Qwerty Punkte 24128

Oder Sie können diese praktische kleine Funktion verwenden, denn warum überkomplizierte Lösungen?

function getQueryParam(param, defaultValue = undefined) {
    location.search.substr(1)
        .split("&")
        .some(function(item) { // gibt das erste Vorkommen zurück und stoppt
            return item.split("=")[0] == param && (defaultValue = item.split("=")[1], true)
        })
    return defaultValue
}

was noch besser aussieht, wenn es vereinfacht und in einer Zeile ist:

tl;dr Einzeilige Lösung

var queryDict = {};
location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})

Ergebnis:
queryDict\['sent'\] // undefined oder 'Wert'

Aber was ist, wenn Sie codierte Zeichen oder mehrwertige Schlüssel haben?

Sie sollten diese Antwort sehen: Wie kann ich Abfragezeichenfolgenwerte in JavaScript erhalten?

Vorschau

"?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab"
> queryDict
a: ["1", "5", "t e x t"]
b: ["2"]
c: ["3"]
d: [undefined]
e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"]

> queryDict["a"][1] // "5"
> queryDict.a[1] // "5"

14voto

Shuhad zaman Punkte 2682

Dieser ist einfach und hat bei mir funktioniert

$.urlParam = function(name){
    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
    return results[1] || 0;
}

wenn deine URL http://www.yoursite.com?city=4 ist

versuche das

console.log($.urlParam('city'));

12voto

kelvintaywl Punkte 235

Vielleicht möchten Sie sich Dentist JS einmal ansehen? (Haftungsausschluss: Ich habe den Code geschrieben)

Code:

document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello"
var currentURL = document.URL;
var params = currentURL.extract();
console.log(params.id); // 1337
console.log(params.author) // "kelvin"
console.log(params.message) // "hello"

Mit Dentist JS können Sie im Grunde die extract()-Funktion auf alle Zeichenfolgen anwenden (z. B. document.URL.extract()) und erhalten eine HashMap aller gefundenen Parameter zurück. Es ist auch anpassbar, um mit Trennzeichen und allem anderen umzugehen.

Minimierte Version < 1kb

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