2694 Stimmen

Wie kann ich Abfrage-String-Werte in JavaScript erhalten?

Gibt es eine Plugin-freie Möglichkeit zum Abrufen von Abfragezeichenfolge Werte über jQuery (oder ohne)?

Wenn ja, wie? Wenn nicht, gibt es ein Plugin, das dies tun kann?

0 Stimmen

Ich verwende das Plugin getUrlParam beschrieben in jQuery-Plugin - getUrlParam (Version 2) .

0 Stimmen

Ich mag Dojo's queryToObject . Die Funktion könnte leicht aus dem Rahmen fallen, wenn Sie auf Diät sind.

69 Stimmen

A einfaches Javascript Lösung ohne RegEx: css-tricks.com/snippets/javascript/get-url-variablen

98voto

Ryan Phelan Punkte 261

Hier ist mein Versuch, Andy E's ausgezeichnete Lösung in ein vollwertiges jQuery-Plugin zu verwandeln:

;(function ($) {
    $.extend({      
        getQueryString: function (name) {           
            function parseParams() {
                var params = {},
                    e,
                    a = /\+/g,  // Regex for replacing addition symbol with a space
                    r = /([^&=]+)=?([^&]*)/g,
                    d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
                    q = window.location.search.substring(1);

                while (e = r.exec(q))
                    params[d(e[1])] = d(e[2]);

                return params;
            }

            if (!this.queryStringParams)
                this.queryStringParams = parseParams(); 

            return this.queryStringParams[name];
        }
    });
})(jQuery);

Die Syntax lautet:

var someVar = $.getQueryString('myParam');

Das Beste aus beiden Welten!

79voto

rodneyrehm Punkte 13149

Wenn Sie mehr URL-Manipulationen vornehmen als nur das Parsen des Querystrings, finden Sie möglicherweise URI.js hilfreich. Es ist eine Bibliothek zur Manipulation von URLs - mit allem Drum und Dran. (Entschuldigung für die Eigenwerbung hier)

um Ihren Querystring in eine Karte umzuwandeln:

var data = URI('?foo=bar&bar=baz&foo=world').query(true);
data == {
  "foo": ["bar", "world"],
  "bar": "baz"
}

(URI.js "repariert" auch schlechte Querystrings wie ?&foo&&bar=baz& à ?foo&bar=baz )

66voto

Anatoly Mironov Punkte 6846

Ich mag Die Lösung von Ryan Phelan . Aber ich sehe keinen Grund, jQuery dafür zu erweitern? Es gibt keine Verwendung von jQuery-Funktionalität.

Andererseits gefällt mir die integrierte Funktion in Google Chrome: window.location.getParameter.

Warum sollte man das nicht nutzen? Okay, andere Browser haben das nicht. Lassen Sie uns also diese Funktion erstellen, wenn sie nicht existiert:

if (!window.location.getParameter ) {
  window.location.getParameter = function(key) {
    function parseParams() {
        var params = {},
            e,
            a = /\+/g,  // Regex for replacing addition symbol with a space
            r = /([^&=]+)=?([^&]*)/g,
            d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
            q = window.location.search.substring(1);

        while (e = r.exec(q))
            params[d(e[1])] = d(e[2]);

        return params;
    }

    if (!this.queryStringParams)
        this.queryStringParams = parseParams(); 

    return this.queryStringParams[key];
  };
}

Diese Funktion ist mehr oder weniger von Ryan Phelan, aber sie ist anders verpackt: klarer Name und keine Abhängigkeiten von anderen Javascript-Bibliotheken. Mehr über diese Funktion in meinem Blog .

60voto

Paul Punkte 134955

Hier ist ein schneller Weg, um ein Objekt zu erhalten, das dem PHP $_GET Array:

function get_query(){
    var url = location.search;
    var qs = url.substring(url.indexOf('?') + 1).split('&');
    for(var i = 0, result = {}; i < qs.length; i++){
        qs[i] = qs[i].split('=');
        result[qs[i][0]] = decodeURIComponent(qs[i][1]);
    }
    return result;
}

Verwendung:

var $_GET = get_query();

Für die Abfragezeichenfolge x=5&y&z=hello&x=6 gibt dies das Objekt zurück:

{
  x: "6",
  y: undefined,
  z: "hello"
}

59voto

Sagiv Ofek Punkte 24832

Halten Sie es einfach in einfachem JavaScript-Code:

function qs(key) {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars[key];
}

Rufen Sie es von einer beliebigen Stelle im JavaScript-Code auf:

var result = qs('someKey');

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