Mam taki adres URL:
http://localhost/PMApp/temp.htm?ProjectID=462
To, co muszę zrobić, to uzyskać szczegóły po ?
znaku (ciągu zapytania) - to znaczy ProjectID=462
. Jak mogę to uzyskać za pomocą JavaScript?
To, co zrobiłem do tej pory, to:
var url = window.location.toString();
url.match(?);
Nie wiem, co dalej.
javascript
query-string
AbdulAziz
źródło
źródło
location.search
Odpowiedzi:
Rzucić okiem na artykuł MDN temat
window.location
.QueryString jest dostępny w
window.location.search
.Rozwiązanie, które działa również w starszych przeglądarkach
MDN zawiera przykład (już niedostępny w wyżej wymienionym artykule), jak uzyskać wartość pojedynczego klucza dostępnego w QueryString. Coś takiego:
W nowoczesnych przeglądarkach
W nowoczesnych przeglądarkach masz
searchParams
właściwość interfejsu URL, która zwraca obiekt URLSearchParams . Zwrócony obiekt ma kilka wygodnych metod, w tym metodę get. Tak więc odpowiednikiem powyższego przykładu byłoby:URLSearchParams interfejs może być również używany do analizowania ciągów w formacie kwerendy i przekształcić je w poręcznej URLSearchParams obiektu.
Zwróć uwagę, że obsługa przeglądarek w tym interfejsie jest nadal ograniczona, więc jeśli potrzebujesz obsługi starszych przeglądarek, trzymaj się pierwszego przykładu lub użyj polyfill .
źródło
encodeURIComponent/decodeURIComponent
zamiastescape/unescape
getQueryStringValue
dla starszych przeglądarek nie działa w?foo=bar&foo1=bar1
przypadku próby pobrania wartości dlafoo
, zwracaempty string
.Użyj,
window.location.search
aby uzyskać wszystko po?
dołączeniu?
Przykład:
źródło
let querystring = window.location.search.substring(1);
źródło
Spowoduje to dodanie funkcji globalnej umożliwiającej dostęp do zmiennych queryString jako mapy.
Cieszyć się.
źródło
Jeśli zdarzyło ci się użyć Typescript i masz dom w swojej bibliotece programu
tsconfig.json
, możesz zrobić:źródło
Możesz użyć tej funkcji, aby podzielić ciąg z? Id =
tutaj jest skrzypce
źródło
Możesz użyć tego do bezpośredniego znalezienia wartości poprzez nazwę parametru.
źródło
źródło
Możesz użyć
search
właściwościwindow.location
obiektu, aby uzyskać część adresu URL zawierającą zapytanie. Zauważ, że zawiera znak zapytania (?) Na początku, na wypadek, gdyby miało to wpływ na sposób, w jaki zamierzasz go przeanalizować.źródło
Powinieneś spojrzeć na URL API, które ma pomocnicze metody, aby to osiągnąć, jako
URLSearchParams
: https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParamsNie jest to obecnie obsługiwane przez wszystkie nowoczesne przeglądarki, więc nie zapomnij go wypełnić (Polyfill jest dostępny pod adresem https://qa.polyfill.io/ ).
źródło
teraz masz część zapytania w queryString
Pierwsza zamiana usunie wszystkie spacje, druga zastąpi całą część „&” znakiem „”, a na końcu trzecia zamiana umieści „:” w miejscu znaków „=”.
Powiedzmy, że masz zapytanie takie jak abc = 123 & efg = 456 . Teraz, przed analizą, zapytanie jest konwertowane na coś takiego jak {"abc": "123", "efg": "456"}. Teraz, kiedy to przeanalizujesz, otrzymasz zapytanie w obiekcie json.
źródło
Przekształć to w tablicę, a następnie podziel za pomocą „?”
źródło
źródło
Spróbuj tego
Załóżmy, że Twój adres URL to http: //example.com&this=chicken&that=sandwich . Chcesz poznać wartość tego, tego i innego.
Jeśli chcesz użyć adresu URL innego niż ten w oknie, możesz go podać jako drugi argument.
Odniesienie
źródło
Myślę, że o wiele bezpieczniej jest polegać na przeglądarce niż na jakimkolwiek genialnym wyrażeniu regularnym:
źródło