Gibt es eine JavaScript-Bibliothek, die ein Wörterbuch aus der Abfragezeichenfolge und dem ASP.NET
Stil erstellt?
Etwas, das verwendet werden kann wie:
var query = window.location.querystring["query"]?
Wird "Abfragezeichenfolge" außerhalb des .NET
Bereichs als etwas anderes bezeichnet ? Warum wird nicht location.search
in eine Schlüssel- / Wertsammlung aufgeteilt ?
EDIT : Ich habe meine eigene Funktion geschrieben, aber macht das eine große JavaScript-Bibliothek?
javascript
query-string
Ader
quelle
quelle
Antworten:
Vielleicht http://plugins.jquery.com/query-object/ ?
Dies ist die Gabelung https://github.com/sousk/jquery.parsequery#readme .
quelle
Sie können die Schlüssel / Wert-Paare aus der Eigenschaft location.search extrahieren. Diese Eigenschaft enthält den Teil der URL, der auf das? Symbol, einschließlich der? Symbol.
quelle
dork.com/?equation=10=2
...?val=foo&val=bar&val=baz
Wie würden Sie dies berücksichtigen ?val=foo&val=bar&val=baz
; es müsste seinval[]=foo&val[]=bar&val[]=baz
%20
ist, so dass ich ersetztresult[keyValuePair[0]] = keyValuePair[1] || '';
mitresult[keyValuePair[0]] = decodeURIComponent((keyValuePair[1]+'').replace(/\+/g, '%20')) || '';
tl; dr Lösung in einer einzelnen (ish) Codezeile unter Verwendung von Vanille-Javascript
Für die Abfrage
?a=1&b=2&c=3&d&e
wird Folgendes zurückgegeben:mehrwertige Schlüssel und verschlüsselte Zeichen ?
Die ursprüngliche Antwort finden Sie unter Wie kann ich Abfragezeichenfolgenwerte in JavaScript abrufen?
quelle
Nachdem ich diesen Beitrag gefunden hatte, dachte ich, ich sollte hinzufügen, dass ich nicht denke, dass die am besten gewählte Lösung die beste ist. Array-Werte werden nicht verarbeitet (z. B.? A = foo & a = bar - in diesem Fall würde ich erwarten, dass a ['foo', 'bar'] zurückgibt). Soweit ich das beurteilen kann, werden codierte Werte nicht berücksichtigt - z. B. die Hexadezimalcodierung, bei der% 20 ein Leerzeichen darstellt (Beispiel :? A = Hello% 20World) oder das Pluszeichen, das zur Darstellung eines Leerzeichens verwendet wird (Beispiel) :? a = Hallo + Welt).
Node.js bietet eine sehr vollständige Lösung für das Querystring-Parsing. Es wäre einfach, es herauszunehmen und in Ihrem eigenen Projekt zu verwenden, da es ziemlich gut isoliert und unter einer zulässigen Lizenz ist.
Der Code dafür kann hier eingesehen werden: https://github.com/joyent/node/blob/master/lib/querystring.js
Die Tests, die Node hat, können hier eingesehen werden: https://github.com/joyent/node/blob/master/test/simple/test-querystring.js Ich würde vorschlagen, einige davon mit der beliebten Antwort zu versuchen, um zu sehen, wie es geht behandelt sie.
Es gibt auch ein Projekt, an dem ich beteiligt war, um diese Funktionalität speziell hinzuzufügen. Es ist ein Port des Python-Standardmoduls zum Parsen von lib-Abfragezeichenfolgen. Meine Gabel finden Sie hier: https://github.com/d0ugal/jquery.qeeree
quelle
Oder Sie könnten die Bibliothek Sugar.js verwenden .
Von suggerjs.com:
Beispiel:
quelle
Wenn Sie den Querystring zur Hand haben, verwenden Sie diesen:
quelle
quelle
decodeURIComponent
zumindest in den extrahierten Zeichenfolgen.decodeURIComponent
Stand.Es ist erwähnenswert, dass die von John Slegers erwähnte Bibliothek eine jQuery-Abhängigkeit aufweist. Hier ist jedoch eine Version, die Vanille-Javascript ist.
https://github.com/EldonMcGuinness/querystring.js
Ich hätte seinen Beitrag einfach kommentiert, aber mir fehlt der Ruf, dies zu tun. : /
Beispiel:
Im folgenden Beispiel wird die folgende, wenn auch unregelmäßige Abfragezeichenfolge verarbeitet:
quelle
Der Code
Dieses Gist von Eldon McGuinness ist bei weitem die vollständigste Implementierung eines JavaScript-Abfragezeichenfolgen-Parsers, den ich bisher gesehen habe.
Leider ist es als jQuery-Plugin geschrieben.
Ich habe es in Vanilla JS umgeschrieben und einige Verbesserungen vorgenommen:
Wie man es benutzt
Ausgabe
Siehe auch diese Geige .
quelle
quelle
Ich mag es einfach, lesbar und klein zu halten.
Beispiel:
quelle
Funktion, die ich für eine ähnliche Anforderung mit reiner Javascript-String-Manipulation geschrieben habe
Verwendung:
quelle
?
, entspricht dies im Grunde den beiden Antworten über Ihnen?Wenn Sie lodash + ES6 verwenden, finden Sie hier eine einzeilige Lösung:
_.object(window.location.search.replace(/(^\?)/, '').split('&').map(keyVal => keyVal.split('=')));
quelle
Okay, da jeder meine eigentliche Frage ignoriert, werde ich auch meine posten! Folgendes habe ich:
Und die Tests:
Wohlgemerkt, JavaScript ist nicht meine Muttersprache.
Wie auch immer, ich suche nach einer JavaScript-Bibliothek (zB jQuery, Prototype), in der bereits eine geschrieben ist. :) :)
quelle
Aufbauend auf der Antwort von @CMS habe ich Folgendes (in CoffeeScript, das leicht in JavaScript konvertiert werden kann):
Sie können ganz einfach greifen, was Sie brauchen:
Der Gewinn hier ist eine objektorientierte Schnittstelle (anstatt funktional) und kann für jede Zeichenfolge (nicht nur location.search) ausgeführt werden.
Wenn Sie bereits eine JavaScript-Bibliothek verwenden, ist diese Funktion bereits vorhanden. Hier ist zum Beispiel die Version von Prototype
quelle