![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czesc, mam nastepujacy problem: Mam sobie menu - kazda opcja w menu to link do kolejnej str. W definicji linka dla kazcej strony istnieje metoda:
Menu jest tworzone po stronie php. Ta metoda w js ma nastepujaca postac:
Jej zadaniem jest wyczyszczenie tego co bylo w sesji w poprzedniej stronie. (Nie moge czyscic sesji za kazdym razem gdy wyswietlam str, poniewaz jak bede odswiezac albo submitem wykonywac akcje na tej samej str - to bede tracic rzeczy z sesji. A sa one mi potrzebne "per strona"). Czyszczenie sesji ma sie odbywac na zmiane zakladki (strony). Ok, w skrypcie ajax_unset.. mam tak:
I teraz to co najgorsze - to sie raz wykonuje, a raz nie! Tzn przy wejsciu na zakladke nowa wypisuje sobie var_dump te wartosci ($_SESSION['field_1'], $_SESSION['field_2']..) i raz sa '' czyli tak jak powinno byc, a raz na pare razy zawieraja poprzednie wartosci! Wiem ze to wrozenie z fusow, ale totalnie nie przychodzi mi do glowy co ja moge miec zle. Robie session_start bo tego wymaga to by to zadzialalo, myslalam ze moze tworzy sie przez to jaka druga sesja i no jakos nie zawsze wspolgra z ta 1sza. Probowalam niszczyc sesje na koncu skryptu ajax_unset.. ale wtedy mnie wylogowywuje.. Czy ktos z Was ma moze jakis pomysl? pzdr, misty |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Ja mam, zrób tak:
i tak:
Po wykonaniu ajax'a zobacz co masz w konsoli |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Czesc, dzieki za pokazanie jak wypisywac na konsole, nie znalam tego. Niestety z tego co widze to bug musi lezec gdzies indziej. Za kazdym razem dostaje info ze kod sie wykonal, czyli ze ok. Wyglada na to ze:
1. Albo $_SESSION['field_1'] = '' nie dziala i trzyma poprzednia wartosc, ale to chyba niemozliwe by to nie dzialalo (IMG:style_emoticons/default/smile.gif) 2. Albo cos mi zaraz tam wstawia wartosc. pzdr Wiesz co, potestowalam troche wiecej i teraz mialam przypadek kiedy sie ten ajax nie wywolal. Ale na konsoli nic sie nie pojawilo.. wiec tropu brak :/ |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Podaj pełny kod "onClick = \"unsetSelectedValuesFromPreviousPage();\""
Do tego powiedz czy przypadkiem nie generujesz dynamicznie tych zdarzeń, bo jeśli tak to musisz użyć jQuery.live(); |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz co, ja to menu mam tworzone po str php, poniewaz na podstawie typow i podtypow (co jest trzymane w bazie) to jest budowane. Czyli jest tam for i pare warunkow, ale dla kazdego elementu menu jest dodawane:
w onClickPage jest ta metoda. A z tym live to o co chodzi? A jesli chodzi o pelny kod tej metody, to podawalam w 1szym poscie:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
No to w takim wypadku błędem jest to, że jakaś zmienna może być nieprawidłowo generowana i wywala ci to on click (tak mi się wydaje).
Poczytaj: http://api.jquery.com/live/ Wywal w php to $onClickPage i na stronie gdzie znajduje się ten link daj na samym dole w sekcji body (tylko nadaj temu odnośnikowi klasę: unset - <a href="xxx" class="unset">...</a>): <script> $(a.unset).live('click',function() { unsetSelectedValuesFromPreviousPage(); }); </script> |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej, ten kod:
Kod $(a.unset).live('click',function() { unsetSelectedValuesFromPreviousPage(); }); To mi wywalal w konsoli ze"a" jest undefinied, wiec zmienilam na: Kod $("a.unset").live('click',function() { unsetSelectedValuesFromPreviousPage(); }); chociaz nie wiem czy to jest poprawnie - tak czy siak nie dziala :/ juz mam powoli dosc, totalnie nie kapuje co tu sie dzieje. Moze powinnam zmienic podejscie i jako str php czyscic te wartosci z sesji zamiast metody onClick i ajax'a.. Ten post edytował misty 16.03.2012, 11:43:46 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Dobrze zrobiłeś, po prostu pisałem z palca, w normalnych warunkach poprawiło by mnie moje IDE (IMG:style_emoticons/default/tongue.gif)
Musisz poczytać, w jaki sposób korzystać z jQuery, bo w ogóle go nie wykorzystujesz ! Nie generuj eventów dynamicznie w php - po co ? Od tego właśnie masz (moim zdaniem) najlepszy framework czyli jQuery (IMG:style_emoticons/default/smile.gif) Nie napisałeś jednak, co się dzieje w chwili, gdy nie czyści Ci sesji - czy ajax w ogóle się wykonuje ? Czy konsola wyrzuca cokolwiek ? Czy nic się nie dzieje po prostu ? Czy ten link zmienia się w chwili kliknięcia w niego ? Tak na prawdę nic nie wiem o twoim skrypcie (IMG:style_emoticons/default/smile.gif) w ciemno nie pomogę niestety. Porponuję mniej php więcej javascript (jQuery) i nie korzystanie z eventów (onClick, czy onMouseDown) wewnątrz tagów - lepiej tak jak Ci pokazałem, użyj jQuery - mniejsza możliwość pomyłki i wszystko na patelni (IMG:style_emoticons/default/smile.gif) Acha - zrób sobie jeszcze jeden test - wywal z tego linka wszytko oprócz onClick i zobacz czy wtedy wszytko jest ok, jeśli tak to znaczy, że inne eventy mają nieprawidłową składnie. Może gdzieś nie zamykasz " czy otwierasz ' i nie zamykasz go - musisz przepatrzeć wszystko Ten post edytował cudny 16.03.2012, 12:16:36 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 366 Pomógł: 0 Dołączył: 2.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jestem Ona a nie On (IMG:style_emoticons/default/smile.gif)
jesli chodzi o ajax'a - to wlasnie kiedy sie nie wykonuje to konsola nie rzuca mi zupelnie nic (wykorzystalam by to sprawdzic "always" zamiast "sucess"). Chyba sie po prostu z tym poddaje i na prawde zrobie to po str php tymbardziej ze mam odpowiednie miejsce na wywolanie "czyszczacej metody" - zadziala dla kazdej zakladki. A tutaj po prostu nie wiadomo co sie dzieje. Raz sie ten ajax wykonuje i jest ok, raz sie wykonuje ale nie jest ok (dane nie sa czyszczone albo cos je tam znow wrzuca), innym razem w ogole sie nie wykonuje ale konsola nic nie rzuca. Za duzo juz czasu mi na tym zeszlo. Odpuszczam ten sposob, ale dzieki za wszystkie rady i probe pomocy. pzdr, misty |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 387 Pomógł: 66 Dołączył: 31.03.2005 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
To znaczy, że masz błędy w składni i event się nie wykonuje. Poczytaj o events jQuery i zrób to poprawnie, a będziesz używać ajax'a z uśmiechem (IMG:style_emoticons/default/wink.gif)
A co do ON a nie ONA to z przyzwyczajenia (IMG:style_emoticons/default/wink.gif) sorki (IMG:style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Problem w tym, że żadanie AJAX-owe po prostu nie zdąży się wykonać zanim nastąpi przejście do określonej strony. Tzn. kliknięcie w odnośnik uruchamia AJAX-owego requesta, ale powoduje również prawie natychmiastowe przejście do wybranej strony. W momencie przejścia do tej wybranej strony żadanie AJAX-owe zostaje przerwane. Rozwiązaniem może być zmuszenie AJAX-a do pracy synchronicznej (opcja async). Może to jednak spowodować skutki uboczne (przejście z jednej strony na inną może trwać zbyt długo i użytkownik nie będzie mógł nic w tym czasie zrobić).
Nie znam założeń całego systemu, ale używanie AJAX-a tylko do czyszczenia sesji (i to jeszcze tuż przed opuszczeniem danej strony) to chyba lekkie nadużycie i być może trzeba się zastanowić nad innym rowiązaniem. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
To jeden ze sposobów w jaki wykorzystyję JQ i Ajax.
notatnik_szukaj2x.php
notatnik_szukaj2.php
Może to jest kiepski sposób ,ale działa. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 21:56 |