Ich habe eine URL wie diese:
http://localhost/PMApp/temp.htm?ProjectID=462
Was ich tun muss, ist, die Details nach dem ?
Zeichen (Abfragezeichenfolge) zu erhalten - das heißt ProjectID=462
. Wie kann ich das mit JavaScript bekommen?
Was ich bisher gemacht habe ist folgendes:
var url = window.location.toString();
url.match(?);
Ich weiß nicht, was ich als nächstes tun soll.
javascript
query-string
AbdulAziz
quelle
quelle
location.search
Antworten:
Schauen Sie sich den MDN-Artikel über an
window.location
.Der QueryString ist in verfügbar
window.location.search
.Lösung, die auch in älteren Browsern funktioniert
MDN bietet ein Beispiel (im oben genannten Artikel nicht mehr verfügbar), wie der Wert eines einzelnen Schlüssels abgerufen wird, der im QueryString verfügbar ist. Etwas wie das:
In modernen Browsern
In modernen Browsern haben Sie die
searchParams
Eigenschaft der URL-Schnittstelle, die ein URLSearchParams- Objekt zurückgibt . Das zurückgegebene Objekt verfügt über eine Reihe praktischer Methoden, einschließlich einer get-Methode. Das Äquivalent des obigen Beispiels wäre also:Die URLSearchParams- Oberfläche kann auch verwendet werden, um Zeichenfolgen in einem Querystring-Format zu analysieren und sie in ein praktisches URLSearchParams-Objekt umzuwandeln.
Beachten Sie, dass die Browserunterstützung für diese Benutzeroberfläche immer noch eingeschränkt ist. Wenn Sie also ältere Browser unterstützen müssen, bleiben Sie beim ersten Beispiel oder verwenden Sie eine Polyfüllung .
quelle
encodeURIComponent/decodeURIComponent
anstelle vonescape/unescape
getQueryStringValue
für ältere Browser funktioniert nicht für?foo=bar&foo1=bar1
Wenn wir versuchen, einen Wert für abzurufenfoo
, wird sie zurückgegebenempty string
.Verwenden Sie
window.location.search
, um alles nach dem?
Einschließen zu erhalten?
Beispiel:
quelle
let querystring = window.location.search.substring(1);
quelle
Dadurch wird eine globale Funktion hinzugefügt, um als Map auf die queryString-Variablen zuzugreifen.
Genießen.
quelle
Wenn Sie zufällig verwenden Typoskript und haben dom in Ihrem den lib von
tsconfig.json
, können Sie tun:quelle
Sie können diese Funktion für geteilte Zeichenfolgen von? Id = verwenden
Hier ist die Geige
quelle
Sie können dies für den direkten Suchwert über den Parameternamen verwenden.
quelle
quelle
Sie können die
search
Eigenschaft deswindow.location
Objekts verwenden, um den Abfrageteil der URL abzurufen. Beachten Sie, dass das Fragezeichen (?) Am Anfang enthalten ist, nur für den Fall, dass dies Auswirkungen darauf hat, wie Sie es analysieren möchten.quelle
Sie sollten sich die URL-API ansehen, die Hilfsmethoden enthält, um dies zu erreichen
URLSearchParams
: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParamsDies wird derzeit nicht von allen modernen Browsern unterstützt. Vergessen Sie also nicht, es zu füllen (Polyfill ist über https://qa.polyfill.io/ verfügbar ).
quelle
Jetzt haben Sie den Abfrageteil in queryString
Das erste Ersetzen entfernt alle Leerzeichen, das zweite ersetzt den gesamten '&' Teil durch ", und schließlich setzt das dritte Ersetzen": "anstelle von '=' Zeichen.
Angenommen , Sie hatten eine Abfrage wie abc = 123 & efg = 456 . Vor dem Parsen wird Ihre Abfrage in etwas wie {"abc": "123", "efg": "456"} konvertiert. Wenn Sie dies jetzt analysieren, erhalten Sie Ihre Abfrage im JSON-Objekt.
quelle
Konvertiere das in ein Array und teile es mit '?'
quelle
quelle
Probier diese
Angenommen, Ihre URL lautet http: //example.com&this=chicken&that=sandwich . Sie möchten den Wert von diesem, jenem und einem anderen erhalten.
Wenn Sie eine andere URL als die im Fenster verwenden möchten, können Sie eine als zweites Argument übergeben.
Referenz
quelle
Ich denke, es ist viel sicherer, sich auf den Browser zu verlassen als auf geniale Regex:
quelle