zmiana adresu url

0

witam !

mam sobie funkcję napisaną w javascript która ładnie buduje mi URL z zmiennymi jakie chcę:
alert(buildUrl(url, parameters));
wynik:

http://localhost:81/tests/trolololo.aspx?a=48&b=50&c=45&d=125

moje pytanie brzmi następująco. Jak mogę umieścić zbudowanego urla w adresie? bez potrzeby przeładowania całej strony?

1

co konkretnie chcesz zrobić?

to co opisujesz można zrobić tylko na nowych przeglądarkach (chrome 5 / IE 10 / firefox 4 / opera 11.5 / safari 5)
i tylko pod warunkiem że adres na jaki chcesz zmienić pochodzi z tej samej domeny (żeby zapobiec wykorzystywania tego do phishingu)

robi się to za pomocją:

history.pushState(dane_w_json_lub_string, “Tytuł”, “/nowy_adres”); // nie trzeba pisać domeny bo i tak się jej nie da zmienić / tytuł jest zdaje się ignorowany

ale nie jestem pewien czy o to Ci chodzi

jeżeli chcesz to połączyć z ajaksem żeby to fajnie chodziło musisz reagować na zdarzenie onpopstate

0

co konkretnie chcesz zrobić?

przykład. Mam sobie stronę, user kliknie np. w jeden obrazek - adres strony zmienił się dynamicznie na www.abc.com/das.aspx?A=1 (i nie przeładowało strony). Zaraz potem kliknął na drugi obrazek i adres zmienił się na www.abc.com/das.aspx?A=2 - znów nie przeładowało strony.

history.pushState(dane_w_json_lub_string, “Tytuł w historii”, “/nowy_adres”);

Co dać w pierwszym polu? Po co jest tytuł w historii? Można to zostawić puste? nowy adres to będzie np das.aspx?A=2, tak?

pozdrawiam i dzięki za odpowiedź!

1
Kokoszz napisał(a):

co konkretnie chcesz zrobić?

przykład. Mam sobie stronę, user kliknie np. w jeden obrazek - adres strony zmienił się dynamicznie na www.abc.com/das.aspx?A=1 (i nie przeładowało strony). Zaraz potem kliknął na drugi obrazek i adres zmienił się na www.abc.com/das.aspx?A=2 - znów nie przeładowało strony.

history.pushState(dane_w_json_lub_string, “Tytuł w historii”, “/nowy_adres”);

Co dać w pierwszym polu? Po co jest tytuł w historii? Można to zostawić puste? nowy adres to będzie np das.aspx?A=2, tak?

pozdrawiam i dzięki za odpowiedź!

nawet proponowane jest zostawienie tego parametru pustego bo zdaje się przeglądarki różnie go interpretują
a w pierwszym polu można przekazać jakieś dane, które można potem odzyskać w zdarzeniu onpopstate gdy user kliknie np "cofnij" w przeglądarce
przykładowo w Twoim przypadku możesz zrobić:

history.pushState(parameters, '', buildUrl(url, parameters));

dzięki temu możesz identyfikować różne "stany" i odzyskać parametry bez "wyłupywania" ich z powrotem z adresu

warto też zadbać o stare przeglądarki zmieniając adres po znaku #

zmiana tylko części adresu po hashu nie powoduje przeładowania strony
a możesz spokojnie połączyć obie metody

0

po prostu cud miód i malina. O to chodziło, a tyle męczarni było wcześniej :) dzięki wielkie !

0

chociaż jeszcze podciągnę temat. Mam jedno pytanie.

Buduje elegancko nowego URL'a. Wrzucam go w adres - jest pięknie. Ale potrzebuję ostatniej rzeczy- aby przenosić dynamicznie zmienne z adresu (poprzez querystring) do pliku trololo.aspx.cs, znów "bez potrzebny przeładowania strony". Wiadomo, gdy przeładowuje to querystring dla zmiennych działa ładnie i wyłapuje co trzeba.
Lecz chciałbym aby robił to dynamicznie, ewentualnie po wykryciu akcji "buttonclick", ale bez reloadu strony.
(a akcję buttonclick wywołuje elegancko w JS:)
document.getElementById("<%=UpdateButton1.ClientID %>").click();

Jak mogę to zrobić? Da się coś w tym temacie zdziałać?

pozdrawiam !

1 użytkowników online, w tym zalogowanych: 0, gości: 1