Szukam wtyczki jQuery, która może pobierać parametry adresu URL i obsługiwać ten ciąg wyszukiwania bez wyświetlania błędu JavaScript: „zniekształcona sekwencja URI”. Jeśli nie ma wtyczki jQuery, która to obsługuje, muszę wiedzieć, jak ją zmodyfikować, aby to obsługiwała.
?search=%E6%F8%E5
Wartość parametru URL po zdekodowaniu powinna wynosić:
æøå
(znaki są norweskie).
Nie mam dostępu do serwera, więc nie mogę niczego na nim modyfikować.
javascript
url
query-string
url-parameters
Sindre Sorhus
źródło
źródło
decodeURIComponent()
. Norweskie znaki najprawdopodobniej zostały zakodowane przy użyciu czegoś podobnegoescape()
i zmianadecodeURIComponent()
wezwania na aunescape()
powinna pomóc.Odpowiedzi:
źródło
name = 'bar'
, myślę, że to wyrażenie regularne będzie pasować'foobar=10'
i powrotu'10'
. Może mógłbyś dodać'[?|&]'
na początku swojego wyrażenia regularnego. Twoje zdrowie!function getURLParameter(name) { var p = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search); if(!!p) { p = decodeURI(p[1]); } return p; }
Poniżej jest to, co utworzyłem z komentarzy tutaj, a także naprawianie błędów, o których nie wspomniano (takich jak zwracanie wartości null, a nie „null”):
źródło
new
przed RegExp? Mniej ostrzeżeń.To, czego naprawdę chcesz, to wtyczka jQuery URL Parser . Dzięki tej wtyczce uzyskanie wartości określonego parametru adresu URL (dla bieżącego adresu URL) wygląda następująco:
Jeśli chcesz obiekt z nazwami parametrów jako kluczami i wartościami parametrów jako wartości, po prostu wywołaj
param()
bez argumentu, na przykład:Ta biblioteka działa również z innymi adresami URL, nie tylko bieżącym:
Ponieważ jest to cała biblioteka analizująca adresy URL, możesz również uzyskać inne informacje z adresu URL, takie jak określony port lub ścieżka, protokół itp:
Ma również inne funkcje, sprawdź stronę główną, aby uzyskać więcej dokumentów i przykładów.
Zamiast pisać własny parser URI dla tego konkretnego celu, który w pewnym sensie działa w większości przypadków używać rzeczywistego parsera URI. W zależności od odpowiedzi kod z innych odpowiedzi może zwrócić
'null'
zamiastnull
, nie działa z pustymi parametrami (?foo=&bar=x
), nie może parsować i zwracać wszystkich parametrów naraz, powtarza pracę, jeśli wielokrotnie pytasz URL o parametry itp.Użyj rzeczywistego analizatora składni URI, nie wymyślaj własnego.
Dla tych, którzy są niechętni do jQuery, dostępna jest wersja wtyczki, która jest czystym JS .
źródło
Jeśli nie wiesz, jakie będą parametry adresu URL i chcesz uzyskać obiekt z kluczami i wartościami, które są w parametrach, możesz użyć tego:
Wywołanie getParameters () z adresem URL jak
/posts?date=9/10/11&author=nilbus
zwróci:Nie dołączę tutaj kodu, ponieważ jest on jeszcze dalej od pytania, ale weareon.net opublikował bibliotekę, która pozwala również na manipulowanie parametrami w adresie URL:
źródło
{"": undefined}
gdy adres URL jest pozbawiony parametrów. Najlepiej zwrócić pusty obiekt, używającif(searchString=='') return {};
bezpośrednio posearchString
przypisaniu.Możesz użyć właściwości macierzystej location.search przeglądarki :
Ale jest kilka wtyczek jQuery, które mogą ci pomóc:
źródło
Na podstawie odpowiedzi z 999 :
Zmiany:
decodeURI()
jest zastąpiony przezdecodeURIComponent()
[?|&]
jest dodawany na początku wyrażenia regularnegoźródło
?a=&b=1
. Lepszym"[?&]"+name+"=([^&]*)"
Musisz dodać parametr i, aby rozróżnić wielkość liter:
źródło
Po przeczytaniu wszystkich odpowiedzi skończyłem z tą wersją z drugą funkcją do używania parametrów jako flag
źródło
źródło
Na przykład funkcja, która zwraca wartość dowolnej zmiennej parametrów.
I w ten sposób możesz użyć tej funkcji, zakładając, że adres URL to:
„http://example.com/?technology=jquery&blog=jquerybyexample”.
Zatem w powyższym kodzie zmienna „tech” będzie miała „jQuery” jako wartość, a zmienna „blog” będzie miała wartość „jquerybyexample”.
źródło
Nie powinieneś używać jQuery do czegoś takiego!
Nowoczesny sposób polega na użyciu małych modułów wielokrotnego użytku za pośrednictwem menedżera pakietów, takiego jak Bower.
Stworzyłem mały moduł, który może przetwarzać ciąg zapytania w obiekt. Użyj tego w ten sposób:
źródło
Jest tu dużo błędnego kodu, a rozwiązania wyrażeń regularnych są bardzo wolne. Znalazłem rozwiązanie, które działa do 20 razy szybciej niż odpowiednik wyrażenia regularnego i jest elegancko proste:
Regex nie jest rozwiązaniem całościowym, dla tego typu problemów prosta manipulacja łańcuchem może działać znacznie wydajniej. Źródło kodu .
źródło
getURLParameter(id)
lubgetURLParameter(Id)
działa tak samo:)źródło
Fragment kodu jQuery, aby uzyskać dynamiczne zmienne przechowywane w adresie URL jako parametry i przechowywać je jako zmienne JavaScript gotowe do użycia ze skryptami:
źródło
źródło
Utworzyłem prostą funkcję pobierania parametru URL w JavaScript z adresu URL takiego:
WYNIK:
18
źródło
Na wypadek, gdybyście mieli adres URL jak localhost / index.xsp? A = 1 # coś i musicie zdobyć parametr, a nie skrót.
źródło
Niewielka modyfikacja odpowiedzi autorstwa @pauloppenheim, ponieważ nie będzie poprawnie obsługiwać nazw parametrów, które mogą być częścią innych nazw parametrów.
Np .: Jeśli masz parametry „appenv” i „env”, wykupienie wartości dla „env” może podnieść wartość „appenv”.
Naprawić:
źródło
To może pomóc.
źródło
?twothrids=text