Kennt jemand eine gute Möglichkeit, eine jQuery-Erweiterung zu schreiben, um Abfragezeichenfolgenparameter zu verarbeiten? Grundsätzlich möchte ich die magische jQuery- ($)
Funktion erweitern, damit ich so etwas tun kann:
$('?search').val();
Welches würde mir den Wert "Test" in der folgenden URL geben : http://www.example.com/index.php?search=test
.
Ich habe viele Funktionen gesehen, die dies in jQuery und Javascript tun können, aber ich möchte jQuery tatsächlich so erweitern, dass es genau so funktioniert, wie es oben gezeigt wird. Ich suche kein jQuery-Plugin, sondern eine Erweiterung der jQuery-Methode.
javascript
jquery
url
jquery-plugins
query-string
TroySteven
quelle
quelle
$
genug überladen?Antworten:
Nach Jahren hässlichen String-Parsens gibt es einen besseren Weg: URLSearchParams Schauen wir uns an, wie wir diese neue API verwenden können, um Werte vom Speicherort abzurufen !
UPDATE: IE wird nicht unterstützt
Verwenden Sie diese Funktion aus einer Antwort unten anstelle von URLSearchParams
quelle
Warum jQuery erweitern? Was wäre der Vorteil einer Erweiterung von jQuery gegenüber einer globalen Funktion?
http://jsfiddle.net/gilly3/sgxcL/
Ein alternativer Ansatz wäre, die gesamte Abfragezeichenfolge zu analysieren und die Werte zur späteren Verwendung in einem Objekt zu speichern. Dieser Ansatz erfordert keinen regulären Ausdruck und erweitert das
window.location
Objekt (könnte aber genauso gut eine globale Variable verwenden):http://jsfiddle.net/gilly3/YnCeu/
Diese Version nutzt auch
Array.forEach()
, was nativ in IE7 und IE8 nicht verfügbar ist. Es kann mithilfe der Implementierung bei MDN hinzugefügt werden , oder Sie können$.each()
stattdessen jQuery's verwenden.quelle
name=value
paarweise getrennt durch&
. Wenn Ihr Code ein benutzerdefiniertes Querystring-Format verwendet, müssen Sie natürlich einen benutzerdefinierten Querystring-Parser schreiben, wo immer der Querystring verwendet wird, egal ob auf dem Server oder dem Client.GET
wird als codiertapplication/x-www-form-urlencoded
, wobei die Werte durch getrennt sind&
. Mein Code behandelt diesen Standard. Benutzerdefinierte URL-Strukturen wie die von Ihnen verknüpfte benötigen einen benutzerdefinierten Parser für Server und Client. Unabhängig davon wäre es trivial, meinem obigen Code eine solche Funktion hinzuzufügen.JQuery jQuery-URL-Parser Plugin die gleiche Arbeit, zum Beispiel den Wert abrufen Suche Query - String param, können SieDiese Bibliothek wird nicht aktiv gepflegt. Wie vom Autor desselben Plugins vorgeschlagen, können Sie URI.js verwenden .
Oder Sie können stattdessen js-url verwenden. Es ist ziemlich ähnlich zu dem unten.
So können Sie auf den Abfrageparameter wie zugreifen
$.url('?search')
quelle
file://
Protokoll führt dazu, dass viel mehr Dinge nicht funktionieren. Mit node.js können Sie einen sehr schnellen und einfachen statischen HTML-Server erstellen. stackoverflow.com/questions/16333790/…Fand dieses Juwel von unseren Freunden bei SitePoint. https://www.sitepoint.com/url-parameters-jquery/ .
Verwenden von PURE jQuery. Ich habe das gerade benutzt und es hat funktioniert. Zum Beispiel ein bisschen optimiert.
Verwenden Sie, wie Sie wollen.
quelle
results[1] || 0
müssen Sie tun, wenn (results) {return results [1]} return 0; bcoz-Abfrageparameter sind möglicherweise überhaupt nicht vorhanden. Durch Ändern werden alle allgemeinen Fälle behandelt.https://example.com/?c=Order+ID
? Dieses Pluszeichen bleibt bei dieser Funktion erhalten.Dies ist nicht mein Codebeispiel, aber ich habe es in der Vergangenheit verwendet.
quelle
Ich habe eine kleine Funktion geschrieben, bei der Sie nur den Namen des Abfrageparameters analysieren müssen. Wenn Sie also :? Project = 12 & Mode = 200 & date = 2013-05-27 haben und den Parameter 'Mode' möchten, müssen Sie nur den Namen 'Mode' in die Funktion analysieren:
quelle
Aufbauend auf der obigen Antwort von @Rob Neild ist hier eine reine JS-Anpassung, die ein einfaches Objekt dekodierter Abfragezeichenfolgenparameter (keine% 20 usw.) zurückgibt.
quelle
""
. Und Sie erhalten {"": "undefined"}Geschrieben in Vanilla Javascript
quelle
Ich benutze das.
quelle