Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Powrót do poprzedniej pod, pod zakładki
adamantd
post 23.10.2012, 12:41:50
Post #1





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Witam, nie mogę sobie poradzić z nawigacją na stronie -projekt jest oparty głównie na php ale zakładkę mój profil zrobiłem całą w jquery i ajaxem odpalam phpa. Wszystko gra, dynamicznie przechodzą sobie pod-zakładki typu, moje dane, zdarzenia itp, problem pojawia się na moich wiadomościach gdzie są kolejne pod-zakładki ładowane dynamicznie bez przeładowania jak skrzynka odbiorcza, wysłane i nowa wiadomość. Mianowicie np w skrzynce odbiorczej lub w wysłanych wyświetlane są nagłówki wiadomości wraz z nickiem i avatarem nadawcy lub odbiorcy w tych drugich. Można sobie kliknąć nie tylko na nagłówek, żeby wejść do wnętrza wiadomości ale na nick lub avatar usera, żeby zerknąć do jego profilu. I tutaj pojawia się problem. Będąc we wnętrzu wiadomości lub w profilu innego usera po kliknięciu na mały link nawigacyjny (powrót do poprzedniej strony) przerzuca do mojego profilu gzdie to wszystko się zaczęło ale do pierwszej zakładki jaka tam jest. I nie jest to oczywiście skrzynka odbiorcza ani nadawcza. Jutro dorobię tam jeszcze paginację w jquery i pojawi siękolejny problem, bo po kliknięciu na powrót do poprzedniej strony chciałbym aby powrót nastąpił do tego miejsca w którym kliknięto na link. Linki typu powrót do poprzedniej strony zrobiłem pierwotnie w php $_SERVER['HTTP_REFERER'] ale w javiescript dzieje sięt samo history.back() lub history.go(-1), ponieważ w pasku url jest adres do mojego profilu a nie do którejś tam pod-zakładki wczytywanej dynamicznie ajaxem. Pytanie moje brzmi czy istnieje jakiś sposób, żeby wracać do miejsca kliknięcia na link? Bo jeśli nie da siętego w żaden sposób rozwiązać to chyba zacznę otwierać linki w nowym oknie, żeby nie tracić tego co jest w chwili klikania na link. Choć nie podoba mi się za bardzo otwieranie czegoś w nowym oknie chyba że dynamicznie zrobić to w jQuery ale roboty będzie na 2 dni bo np klasa profilu usera w php to kilkaset linijek. Macie jakieś pomysły?
z góry dzięki
Go to the top of the page
+Quote Post
erix
post 23.10.2012, 13:59:49
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Weź to napisz jakoś składnie i używając akapitów, bo wymiękłem w połowie czytania...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
adamantd
post 23.10.2012, 14:13:53
Post #3





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Na jednej z podstron wczytuję dane ajaxem. Ale ta podstrona ma kilka pod-zakładek, i klikając na każdą z nich ajax odpala php i wczytuje kolejne dane. (url pozostaje bez zmian)
Będąc na której kolwiek z pod-zakładek, klikając na jakiś link np na wnętrze wiadomości, przerzuca mnie do jej wnętrza.
Kiedy jednak będąc w niej kliknę na link navigacyjny -powrotu do poprzedniej strony, nie wracam do pod-zakładki z której tu przyszedłem (wczytanej poprzednio za pomocą ajaxa), tylko do strony, która jest w pasku url a do której to wczytywane są dopiero pod-zakładki. Chyba nie umiem jaśniej smile.gif

A chcę powracać do miejsca z którego kliknąłem (czyli do którejś tam po-zakładki wczytanej ajaxem)
Go to the top of the page
+Quote Post
lukasz1985
post 23.10.2012, 14:16:55
Post #4





Grupa: Zarejestrowani
Postów: 205
Pomógł: 43
Dołączył: 5.03.2012

Ostrzeżenie: (0%)
-----


Żeby móc powrócić do poprzedniej strony w Ajaxie musisz znać zasady routingu w AJAX.
Nowe zapytanie AJAX nie tworzy wpisu w historii przeglądarki, tak więc nie ma możliwości iść wstecz.
Żeby przycisk "wstecz" działał musi dojść do przesłania zapytania przez powłokę.
Go to the top of the page
+Quote Post
adamantd
post 23.10.2012, 14:24:03
Post #5





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Rozumiem -czyli technicznie rzecz biorąc jest to możliwe do wykonania tylko w inny sposób niż do tej pory próbowałem.. Czego konkretnie powinienem szukać w googlu? routing w ajaxie? Przychodzi Ci na myśl jakiś link żeby coś o tym poczytać?
Go to the top of the page
+Quote Post
erix
post 23.10.2012, 14:26:37
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  • hashbang
  • historyState


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
adamantd
post 23.10.2012, 16:03:32
Post #7





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Z tego co zrozumiałem przy każdym wczytaniu kolejnych danych ajaxem muszę użyć

  1. window.history.pushState({ key: value }, 'title', 'foo.html');


tylko teraz pytanie co w tym przypadku będzie kluczem a co wartością?
Używam $.getJSON() ale nie wprawadzam do niego żadnych wartości, które mógłbym podać w pushState, podaję jako pierwszy parametr
lokalizację i nazwę pliku wraz z wartością get, i otrzymuję w funkcji zwrotnej obiekt.

  1. $.getJSON('wsp_scr.php?show_mess_wysl=1', function(jsonTab){})
  2.  


Po za tym kiedy użyłem pushState to w pasku url pokazał się adres ale nic po za tym, nie mogę tego rozkminić -może ktoś w dwóch zdaniach
napisać albo podać prosty przykład zastosowania?
Go to the top of the page
+Quote Post
melkorm
post 23.10.2012, 17:12:05
Post #8





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Pierwszy link z google https://github.com/balupton/History.js/ i raczej to powinno Tobie wystarczyć.


--------------------
Go to the top of the page
+Quote Post
adamantd
post 23.10.2012, 22:09:16
Post #9





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Dalej nic

zaimplementowałem sobie plugin history.js i za pomocą tej metody
  1. History.pushState(null, "Odebrane", "?action=moj_profil&odebr=wiad");


próbuję coś zdziałać. Wykonuję akcję po kliknięciu w pod-zakładkę np odebrane wiadomości , JSON-em pobieram wiadomości po czym używam powyższej metody.

Później mam ifa sprawdzającego url i jeśli mi znajdzie -bazując na powyższym przykładzie 'odebr' i jest on równy 'wiad' to ma wykonać dla innych pod-zakładek display: none
oraz ponownie tego JSON-a. I nie działa. Kiedy wchodzę w zakłądkę odebrane w pasku url pokazuje sięto co się ma pokazać ale kiedy przejdę na inną zakładkę w serwisie a później kliknę wróć do poprzedniej strony to if nie pobierający z urla -nie znajduje tam 'odebr' -choć ten widnieje w pasku adresu i tym samym nie wykonuje się oczekiwana przeze mnie akcja tylko przerzuca na inną pod-zakładkę.... -znowu namieszałem? wink.gif czy ktoś rozumie dlaczego tak się dzieje?

dodam że w innych przypadkach if zbierający wartość z paska url działa bez problemu
Go to the top of the page
+Quote Post
erix
post 24.10.2012, 11:54:58
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Samo wrzucenie nowego stanu do historii nie wystarczy. Trzeba jeszcze obsłużyć zmianę żądania:

Przeglądałeś przykłady? Chyba nie:

Kod
// Bind to State Change
History.Adapter.bind(window,'statechange',


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
adamantd
post 24.10.2012, 13:41:20
Post #11





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Muszę Was o to poprosić bo inaczej chyba tego nie rozkminię -czy może ktoś z Was poświęcić kilka minut i podać mi przykład jak to zrobić? Kombinuje już jak mogę włacznie z obsługą zmiany żądania.

  1.  
  2. History.pushState(null, "odebrane", "?action=moj_profil&odebr=wiad");
  3.  
  4. History.Adapter.bind(window,'statechange',function()
  5. var State = History.getState();
  6. History.log(State.data, State.title, '?action=moj_profil&odebr=wiad');
  7. });
  8.  



jako adres url wpisywałem też nazwę pliku który ma być odpalony przez jsona nic to wszystko nie daje..... ale chyba nie tędy droga -szukam jak to zrobić w googlu ale nie ma nic konkretnego wprost i na temat
Go to the top of the page
+Quote Post
erix
post 24.10.2012, 13:47:31
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Gotowce, to nie ten dział, kombinuj.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
adamantd
post 27.10.2012, 12:57:06
Post #13





Grupa: Zarejestrowani
Postów: 228
Pomógł: 7
Dołączył: 15.08.2012
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Nie szukam gotowca a kombinuje całe życie, nie jestem "mistrz do" w javiescript dlatego pytam się Was, skoro w tym temacie zdajecie się być bardziej ogarnięci ode mnie. Bedę kombinował choćmy miesiąc z tą historią.js -a wykombinować muszę, bo nie chce wrzucać strony na serwer z jakimiś niedociągnięciami (których i tak pewnie będzie sporo co wyjdzie w praniu). Ale dzięki mimo wszystko za "porady"

Dalej nie mogę sobie poradzić z podpięciem zdarzenia -wygląda to mniej więcej tak:

  1.  
  2. $('#wyslaWiadpr').click(function(){
  3. allZadaForWysla();
  4. History.pushState(null, "", "index.php?action=moj_profil&subpage=wiad_wysla");
  5. History.Adapter.bind(window,'',function(){
  6. allZadaForWysla();////////////////////////////////////////////////////////to mi się nie chce wykonać po kliknięciu powrót do poprzedniej strony
  7. });
  8. return false;
  9. });
  10.  
  11. });
  12. return false;
  13. }
  14.  
  15.  
  16.  




funkcja zdefiniowana jest prawidłowo i po kliknięciu na link powyżej działa bez problemów. Nie jest ona zawarta w innej funkcji i powinno wszystko działać a nie działa. Kiedy przeskoczę na inną stronę i dam "wróć" wraca ale nie do tej podzakładki

Do tego zrobiłem sobie jeszcze takiego ifa

  1.  
  2. if(getGETParameter('action')=='moj_profil' && getGETParameter('subpage')=='wiad_wysla'){
  3. allZadaForWysla();/////////////////////i też nie działa
  4. }
  5.  
  6.  
  7.  




czy ktoś jest w stanie podpowiedzieć mi dlaczego?
Nie proszę o kilka angielskojęzycznych linków w których i tak nic nie jest wytłumaczone wprost
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.04.2024 - 22:17