![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
w Body wywołuję tak: <body onload="getpodkatlist1(40)" ; onload="getpodkatlist2(23)"> wywołuje mi się tylko jedna z nich ale dwóch na raz nie mogę wywołać . Dorwałem wtedy w necie kolejną funkcję do wywoływania dwóch funkcji javascript . function onLoadHandler(init_fxn) { var old_init = window.onload; var new_init = init_fxn; window.onload = function(){ if (typeof(old_init)=="function") { old_init; } new_init; } return this; } </script> i próbowałem to wywołać tak: <script type="text/javascript"> new onLoadHandler(getpodkatlist('21')); new onLoadHandler(getpodkatlist2('40')); </script> Gdy wywołuję powyższym handlerkiem funkcję getpodkatlist('21') lub getpodkatlist2('21') to żadna z nich nie działa. Jak wywoływałem je w Body przez onload to chociaż jedna zawsze się ładowała. Gdy wywołuję handlerkiem testową funkcję np. jedną funkcją wołanie alertu, a drugą funkcją np. documet.write() to wszystko działa pięknie. No i teraz sądzę, że problem jest gdzieś w ajax. Tylko nie za bardzo mam pomysł jak wywołać ajax 2 razy albo żeby odpytał plik .php ,a ajax.requestFile odebrał wynik i go zwrócił po czym żeby zrobił to samo na rzecz kolejnego obiektu tą samą metodą. ajax.requestFile - może tu jest gdzieś problem? na pytanie do czego jest ta funkcja odpowiadam - a no do wywoływania kategorii, a potem podkategorii z opcją zapamiętywania wyboru po wysłaniu formularza .Chcę żeby funkcja onload zwrócila mi zapamiętany wynik w opcji wyboru
Ajax wywołuję ten plik getpodkat.php
Na pytanie po co wywołuje tą funkcję dwa razy - odpowiadam bo chcę dać do wyboru użytkownikom dopisania się do kilku kategorii w katalogu. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Cytat Kod <body onload="getpodkatlist1(40)"; onload="getpodkatlist2(23)"> (IMG:style_emoticons/default/sciana.gif) Dlaczego tak!? |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Cytat Kod <body onload="getpodkatlist1(40)"; onload="getpodkatlist2(23)"> Dlaczego tak!? Aj no bo tak też nie działało do końca poprawnie. W jednym i w drugim przypadku była wywołana tylko jedna funkcja.
Chwytałem się każdego pomysła (IMG:style_emoticons/default/guitar.gif) Po za tym jeszcze zbyt słabo znam javascript Ten post edytował fiasko 21.09.2010, 12:45:55 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a po czym stwierdzasz ze wykonuje się tylko raz?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bo nie dostaje wyników z drugiej listy rozwijalnej wywołując zdarzenie onload. Gdy natomiast używam zdarzenia onchange="getpodkatlist(this)" onchange="getpodkatlist2(this)" zarówno w jednym jak i w drugim przypadku lista rozwijalna subkategorii się ładuje. Do zmiennej kadid wędruje id kategorii. kadid może myć załadowana na dwa sposoby - poprzez zdarzenie onload i wtedy dostaje od razu id kategorii lub też po przez onchange i wtedy id jest wyłuskane z obiektu. Mogę też wywołać każdą funkcję pojedyńczo po przez zdarzenie onload i też śmiga. Dlatego sądzę że jest problem z wywołaniem dwóch funkcji na raz.
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Moze obie funkcji piszą do tego samego miejsca i łądując dwie naraz jedna nadpisuje drugą (IMG:style_emoticons/default/smile.gif)
|
|
|
![]() ![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Obie funkcje korzystają z tego samego pliku. Ale moim zdaniem nie powinno mieć to znaczenia. Każda z nich odbiera swoje wyniki bo ma inne wartości wsadowe . Gdyby nadpisywała działanie poprzedniej to w jednej i w drugiej załadowałoby się chociaż to samo. Robiłem testy na to wywołując w jednej i w drigiej te same kategorie z tym samym id. Tak wiec powinny się załadować obydwie gdyby nadpisywała któraś. A tak nie jest.
Wydaje mi się że to Ajax jest wywoływany tylko raz. bo funkcje działają ok. Problem zaczyna się tu
Nie ma jakiegoś sposobu aby zdarzenia wywołać po kolei podczas wczytywania ? Najpierw jedna funkcja potem druga. Sądzę, że trzeba zrobić to tak : określić czy Ajax zwrócił wynik poprawnie po czym wywołać kolejną funkcję wewnątrz poprzedniej. Spróbuję coś wydziergać. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie mowie o nadpisywaniu wewnatrz funkcji a o nadpisywaniu juz po wywolaniu. Funkcje generują jakiś kod js a on zapewne gdzies pisze swoje wyniki. Jesli piszesz w to samo miejsce to się nadpisze.
Ale nie ma co gdybać - zainstaluj sobie FireBuga dla FireFox i wszystko będziesz widział. |
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam to. Ale nie widać tam wszystkiego po wywołaniu.
Zaraz napisze sobie testowe funkcje i sprawdzę co tam się dzieje. Zaraz napisze sobie testowe funkcje i sprawdzę co tam się dzieje. |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
wchodzisz w konsole FireBug i widzisz wszystkie żądania ajax. Jesli zobaczysz tylko jedno to faktycznie dwa na raz ci nie dzialają (IMG:style_emoticons/default/smile.gif)
Jesli zobaczysz dwa..... (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]() ![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak wygląda cały kod:
No to już wiem że problem tyczy się ajax. Trzeba to wywołać pokolei - jakieś pomysły ? Zrobiłem kolejne zmiany. Teraz wywołuję funkcję po tym jak wywoła się funkcja pierwsza :
Ten post edytował fiasko 21.09.2010, 15:07:09 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 12:40 |