Mam ten adres URL:
site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc
potrzebuję, aby móc zmienić wartość param adresu URL wiersza na coś, co określam, powiedzmy 10. A jeśli „wiersze” nie istnieją, muszę dodać go na końcu adresu URL i dodać wartość, którą już podałem (10).
javascript
url
query-string
url-parameters
url-parsing
Sindre Sorhus
źródło
źródło
Odpowiedzi:
Rozszerzyłem kod Sujoy, aby utworzyć funkcję.
Wywołania funkcji:
Zaktualizowana wersja, która zajmuje się także zakotwiczeniami w adresie URL.
źródło
http://www.domain.com/index.php?action=my_action&view-all=Yes
i muszę zmienić wartość „zobacz wszystko”. Moje SO pytanie, które zostało zamknięte: stackoverflow.com/questions/13025880/…Myślę, że chcesz wtyczki zapytania .
Na przykład:
Działa to niezależnie od bieżącego stanu wierszy.
źródło
window.location.pathname
.Aby odpowiedzieć na moje pytanie 4 lata później, po tym, jak wiele się nauczyłem. Zwłaszcza, że nie powinieneś używać jQuery do wszystkiego. Stworzyłem prosty moduł, który może analizować / łańcuchować ciąg zapytania. Ułatwia to modyfikację ciągu zapytania.
Możesz użyć ciągu zapytania w następujący sposób:
źródło
Szybkie, małe rozwiązanie w czystym js, bez wtyczek:
Nazwij to tak:
Lub jeśli chcesz pozostać na tej samej stronie i zastąpić wiele parametrów:
edit dzięki Luke: Aby usunąć parametr całkowicie mijają
false
lubnull
dla wartości:replaceQueryParam('rows', false, params)
. Ponieważ0
jest to również fałsz , określ'0'
.źródło
Ben Alman ma tutaj dobrą wtyczkę querystring / url , która pozwala na łatwą manipulację querystring.
Zgodnie z prośbą -
Przejdź do jego strony testowej tutaj
W Firebug wprowadź następujące dane do konsoli
jQuery.param.querystring(window.location.href, 'a=3&newValue=100');
Zwróci ci następujący zmieniony ciąg adresu URL
Zauważ, że wartość zapytania dla a zmieniła się z X na 3 i dodała nową wartość.
Następnie możesz użyć nowego ciągu adresu URL, jak chcesz, np. Za pomocą document.location = newUrl lub zmienić link kotwiczący itp.
źródło
TypeError: jQuery.param.querystring is not a function
jQuery.param.querystring
. Chyba przebudowali bibliotekę.Nowoczesne podejście do tego polega na użyciu natywnego standardu URLSearchParams . Jest obsługiwany przez wszystkie główne przeglądarki, z wyjątkiem IE, w którym są dostępne wielopełniacze
źródło
site.fwx%3Fposition=1&archiveid=5000&columns=5&rows=10&sorting=ModifiedTimeAsc
mylący, ponieważ nie jest to to, co byś zbudował, gdybyś zrobił to ręcznie ...możesz to zrobić również przez normalny JS
źródło
To nowoczesny sposób zmiany parametrów adresu URL:
źródło
Czy realną alternatywą dla manipulacji ciągiem byłoby skonfigurowanie html
form
i po prostu zmodyfikowanie wartościrows
elementu?Więc z
html
tym jest coś takiegoZa pomocą następującego kodu JavaScript, aby przesłać formularz
Prawdopodobnie nie nadaje się do wszystkich sytuacji, ale może być ładniejszy niż parsowanie ciągu adresu URL.
źródło
Możesz użyć tej mojej biblioteki do wykonania zadania: https://github.com/Mikhus/jsurl
źródło
Rozwiązanie 2020 : ustawia zmienną lub usuwa iti, jeśli przejdziesz
null
lubundefined
do wartości.źródło
URLSearchParams
nie działa w najnowszych wersjach wszystkich głównych przeglądarek (2020)Napisałem małą funkcję pomocnika, która działa z dowolnym wyborem. Wszystko, co musisz zrobić, to dodać klasę „redirectOnChange” do dowolnego elementu select, a to spowoduje ponowne załadowanie strony z nowym / zmienionym parametrem zapytania querystring, równym identyfikatorowi i wartości select, np .:
W powyższym przykładzie dodano „? MyValue = 222” lub „? MyValue = 333” (lub używając „&”, jeśli istnieją inne parametry) i ponownie załadowaliśmy stronę.
jQuery:
źródło
Tutaj wziąłem odpowiedź Adila Malika i naprawiłem 3 problemy, które z nią zidentyfikowałem.
źródło
Oto co robię. Za pomocą mojej funkcji editParams () możesz dodać, usunąć lub zmienić dowolny parametr, a następnie użyć wbudowanej funkcji replaceState (), aby zaktualizować adres URL:
źródło
Moje rozwiązanie:
Następnie wystarczy wywołać „setParams” i przekazać obiekt z danymi, które chcesz ustawić.
Przykład:
W moim przypadku musiałem zaktualizować dane wejściowe html, gdy się zmieniają, a jeśli wartość wynosi „0”, usuń parametr. Możesz edytować funkcję i usunąć parametr z adresu URL, jeśli klucz obiektu ma również wartość „null”.
Mam nadzieję, że to pomoże wszystkim
źródło
Kolejna odmiana odpowiedzi Sujoya. Właśnie zmieniłem nazwy zmiennych i dodałem opakowanie przestrzeni nazw:
Wykorzystanie jest teraz:
źródło
Ja także napisałem bibliotekę do pobierania i ustawiania parametrów zapytań URL w JavaScript .
Oto przykład jego użycia.
Uzyskaj parametry zapytania jako obiekt, według klucza lub dodaj / zmień / usuń.
źródło
Szukałem tego samego i znalazłem: https://github.com/medialize/URI.js, co jest całkiem miłe :)
-- Aktualizacja
Znalazłem lepszy pakiet: https://www.npmjs.org/package/qs dotyczy on również tablic w parametrach get.
źródło
Wiem, że to stare pytanie. Ulepszyłem powyższą funkcję, aby dodać lub zaktualizować parametry zapytania. Nadal tylko czyste rozwiązanie JS.
źródło
moja funkcja obsługuje usuwanie parametrów
źródło
Właśnie napisałem prosty moduł zajmujący się czytaniem i aktualizowaniem aktualnych parametrów zapytań URL.
Przykładowe użycie:
Oto mój kod o nazwie UrlParams. (Js / ts):
źródło
źródło