Ich suche nach einem jQuery-Plugin, das URL-Parameter abruft und diese Suchzeichenfolge unterstützt, ohne den JavaScript-Fehler "fehlerhafte URI-Sequenz" auszugeben. Wenn es kein jQuery-Plugin gibt, das dies unterstützt, muss ich wissen, wie ich es ändern kann, um dies zu unterstützen.
?search=%E6%F8%E5
Der Wert des URL-Parameters sollte beim Dekodieren sein:
æøå
(Die Charaktere sind Norweger).
Ich habe keinen Zugriff auf den Server, daher kann ich nichts daran ändern.
javascript
url
query-string
url-parameters
Sindre Sorhus
quelle
quelle
decodeURIComponent()
. Die norwegischen Zeichen wurden höchstwahrscheinlich mit so etwas wie codiertescape()
und das Ändern desdecodeURIComponent()
Anrufs in einunescape()
sollte helfen.Antworten:
quelle
name = 'bar'
, denke ich, würde dieser reguläre Ausdruck übereinstimmen'foobar=10'
und zurückkehren'10'
. Vielleicht könnten Sie'[?|&]'
zu Beginn Ihres regulären Ausdrucks hinzufügen. Prost!function getURLParameter(name) { var p = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search); if(!!p) { p = decodeURI(p[1]); } return p; }
Im Folgenden ist aufgeführt, was ich aus den Kommentaren hier erstellt habe und welche Fehler nicht erwähnt wurden (z. B. die tatsächliche Rückgabe von null und nicht 'null'):
quelle
new
vor RegExp hinzuzufügen ? Weniger Flusenwarnungen.Was Sie wirklich wollen, ist das jQuery URL Parser Plugin . Mit diesem Plugin sieht das Abrufen des Werts eines bestimmten URL-Parameters (für die aktuelle URL) folgendermaßen aus:
Wenn Sie ein Objekt mit Parameternamen als Schlüssel und Parameterwerten als Werte möchten, rufen Sie einfach
param()
ohne Argument auf:Diese Bibliothek funktioniert auch mit anderen URLs, nicht nur mit der aktuellen:
Da es sich um eine gesamte URL-Analysebibliothek handelt, können Sie auch andere Informationen über die URL abrufen, z. B. den angegebenen Port oder den Pfad, das Protokoll usw.:
Es hat auch andere Funktionen. Weitere Dokumente und Beispiele finden Sie auf der Homepage .
Statt dem eigenen URI - Parser für diesen Zweck zu schreiben , die irgendwie in funktioniert meisten Fällen einen tatsächlichen URI - Parser verwenden. Abhängig von der Antwort kann Code aus anderen Antworten zurückgegeben
'null'
werdennull
, funktioniert nicht mit leeren Parametern (?foo=&bar=x
), kann nicht alle Parameter gleichzeitig analysieren und zurückgeben, wiederholt die Arbeit, wenn Sie die URL wiederholt nach Parametern abfragen usw.Verwenden Sie einen tatsächlichen URI-Parser, erfinden Sie keinen eigenen.
Für diejenigen, die jQuery ablehnen, gibt es eine Version des Plugins, die reines JS ist .
quelle
Wenn Sie die URL-Parameter nicht kennen und ein Objekt mit den Schlüsseln und Werten in den Parametern erhalten möchten, können Sie Folgendes verwenden:
Das Aufrufen von getParameters () mit einer URL wie folgt
/posts?date=9/10/11&author=nilbus
würde Folgendes zurückgeben:Ich werde den Code hier nicht einfügen, da er noch weiter von der Frage entfernt ist, aber weareon.net hat eine Bibliothek veröffentlicht, die auch die Manipulation der Parameter in der URL ermöglicht:
quelle
{"": undefined}
Wenn die URL keine Parameter enthält. Am besten geben Sie ein leeres Objektif(searchString=='') return {};
direkt nach dersearchString
Zuweisung zurück.Sie können die native Eigenschaft location.search des Browsers verwenden :
Es gibt jedoch einige jQuery-Plugins, die Ihnen helfen können:
quelle
Basierend auf der Antwort des 999 :
Änderungen:
decodeURI()
wird ersetzt durchdecodeURIComponent()
[?|&]
wird am Anfang des regulären Ausdrucks hinzugefügtquelle
?a=&b=1
. Besser regexp wäre:"[?&]"+name+"=([^&]*)"
Der Parameter i muss hinzugefügt werden, damit die Groß- und Kleinschreibung nicht berücksichtigt wird:
quelle
Nachdem ich alle Antworten gelesen hatte, erhielt ich diese Version mit + einer zweiten Funktion, um Parameter als Flags zu verwenden
quelle
quelle
Zum Beispiel eine Funktion, die den Wert einer beliebigen Parametervariablen zurückgibt.
Und so können Sie diese Funktion verwenden, vorausgesetzt, die URL lautet:
"http://example.com/?technology=jquery&blog=jquerybyexample".
In der obigen Codevariablen hat "tech" also "jQuery" als Wert und "blog" -Variablen sind "jquerybyexample".
quelle
Sie sollten jQuery nicht für so etwas verwenden!
Der moderne Weg besteht darin, kleine wiederverwendbare Module über einen Paketmanager wie Bower zu verwenden.
Ich habe ein kleines Modul erstellt , das die Abfragezeichenfolge in ein Objekt analysieren kann. Verwenden Sie es so:
quelle
Hier gibt es viel fehlerhaften Code und Regex-Lösungen sind sehr langsam. Ich habe eine Lösung gefunden, die bis zu 20x schneller als das Regex-Gegenstück funktioniert und elegant einfach ist:
Regex ist nicht das A und O, für diese Art von Problem kann die einfache Manipulation von Strings sehr viel effizienter arbeiten. Codequelle .
quelle
getURLParameter(id)
odergetURLParameter(Id)
funktioniert genauso :)quelle
jQuery-Code-Snippet, um die in der URL gespeicherten dynamischen Variablen als Parameter abzurufen und als JavaScript-Variablen zu speichern, die für die Verwendung mit Ihren Skripten bereit sind:
quelle
quelle
Ich habe eine einfache Funktion erstellt, um URL-Parameter in JavaScript von einer URL wie dieser abzurufen:
AUSGABE:
18
quelle
Nur für den Fall, dass ihr die URL wie localhost / index.xsp? A = 1 # habt und ihr den Parameter bekommen müsst, nicht den Hash.
quelle
Leichte Änderung der Antwort durch @pauloppenheim, da Parameternamen, die Teil anderer Parameternamen sein können, nicht ordnungsgemäß verarbeitet werden.
Beispiel: Wenn Sie die Parameter "appenv" und "env" haben, kann durch erneutes Löschen des Werts für "env" der Wert "appenv" ermittelt werden.
Fix:
quelle
Dies kann helfen.
quelle
?twothrids=text