Przepełnienie Stosu? |
Przepełnienie Stosu? |
22.05.2006, 23:46:09
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Zrobiłem sobie formularz: link -> Jestem nowy (w prawym górnym rogu).
Moim zamiarem była walidacja przy użyciu AJAXa czy login lub e-mail w bazie istnieje. Plik "odpowiedzi" zwraca mi 3 różne odpowiedzi: login - login istnieje e_mail - e-mail jest w bazie danych 1 - wszystko okej, zapisano do bazy danych i teraz gdy wpiszę istniejącego użytkownika (dla testów można wpisać jako login '1') wyświetla mi sie komunikat, że delikwent jest już bazie - ok, ale po ponownym wpisaniu wyskakuje: Stack overfolw at line... i już jest nie w porządku :/ Kod JS: Kod function wyslij(){
advAJAX.assign(document.getElementById("form_rej"), { onInitialization : function(obj) { ShowLoading(); }, onSuccess : function(obj) { if(obj.responseText=='login'){ alert('Użytkownik o takim loginie już istnieje w bazie danych.\nPopraw dane.'); $('login_re').value=''; } if(obj.responseText=='e_mail'){ alert('e-mail już istnieje w bazie danych.\nPopraw dane.'); $('e_mail').value=''; } if(obj.responseText=='1'){ $('tekst').innerHTML='Rejestracja zakończyła się pomyślnie'; } }, onFinalization : function(obj) { HideLoading(); } }); } -------------------- |
|
|
24.05.2006, 10:31:23
Post
#2
|
|
Grupa: Zarejestrowani Postów: 160 Pomógł: 4 Dołączył: 22.04.2006 Skąd: Kraków Ostrzeżenie: (0%) |
Ja miałem taki sam problem. Wydaje mi sie że nie można wywoływać niektórych funkcji dwa razy
Zrobiłem to tak: strona pozaładowaniu: link - <a onclick="as(), as2()">link</a> po kliknięciu na linka: <a onclick="as()">link</a> Pisze tego posta już drugi raz i nie chce mi sie rozpisywać, bo wcześniej forum coś nie działało, i nie mam teraz czasu, ale jak coś to później moge służyć swoim doświadczeniem z tym problemem. -------------------- |
|
|
24.05.2006, 23:36:19
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Wydaje się to był bug w klasie advAJAX w metodzie assign, jak to przerobiłem na "standardowego" advAJAX.post to problem zniknął.
-------------------- |
|
|
25.05.2006, 08:54:03
Post
#4
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Tak, jest bug, co jednak nie zmienia faktu, ze metodę assign() powinno się wywoływać *tylko i wyłącznie* raz, a nie za każdym przesłaniem formularza, bo to zwyczajnie nie ma sensu.
-------------------- Łukasz Lach
http://anakin.us/ |
|
|
25.05.2006, 19:49:07
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Wg mnie ma
Wysyłam formularz do pliku. On sprawdza mi czy dane są poprawne (np. czy login/e-mail nie istnieje już w bazie danych), a jeśli wszystko jest ok, to dodaje użytkownika do bazy danych i zwraca mi rezultat. Jeśli rezultat jest negatywny, to użytkownik musi porpawić dane i wysłać formularz ponownie. -------------------- |
|
|
25.05.2006, 20:30:38
Post
#6
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.10.2004 Skąd: Rybnik Ostrzeżenie: (0%) |
hmm, ale jak dobrze poczytałem dokumentację, to metoda assign wykonuje się raz i nie widzę potrzeby wykonywania jej drugi raz...
-------------------- Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox |
|
|
25.05.2006, 21:54:57
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
To co powiedziałeś równie dobrze można było wywnioskować z postu anakina
A post wyżej napisałem Ci, że dla mnie ma sens. -------------------- |
|
|
26.05.2006, 00:43:44
Post
#8
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Cytat A post wyżej napisałem Ci, że dla mnie ma sens. Czyli jednym slowem nie rozumiesz po prostu jak dziala assign(). -------------------- Łukasz Lach
http://anakin.us/ |
|
|
26.05.2006, 12:00:21
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Tak - właśnie nierozumiem.
Cytat Reasumując, aby wykorzystać AdvancedAJAX do wysłania danych formularza w tle wystarczy tylko wywołać metodę .assign(), przy czym można opcjonalnie podać dodatkowe argumenty AdvancedAJAX zapobiegające przedawnieniu czasu połączenia czy obsługujące rezultat wywołania adresu URL. A ja wysyłam właśnie formularz - czyż nie? -------------------- |
|
|
26.05.2006, 14:33:50
Post
#10
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Wybiórczo czytasz...
Cytat Drugą z funkcji jest .assign(), która przyjmuje ten sam zestaw argumentów co poprzednio omawiana funkcja. Wywołanie tej funkcji z odwołaniem na wybrany formularz spowoduje, że AdvancedAJAX zostanie uruchomiony dopiero podczas naciśnięcia przycisku wysłania formularza (<input type="submit" ... />) lub każdej innej akcji, która wywoływała by standardowe procedury wysyłania formularza. To, czego szukasz, jest wyzej: Cytat Pierwszą z nich jest .submit(), której wywołanie powoduje pobranie wartości wszystkich pól formularza i przesłanie ich pod adres URL jego akcji. Funkcja ta przyjmuje dwa argumenty. Pierwszym z nich jest wskaźnik do obiektu DOM formularza, czyli np. wynik działania funkcji document.getElementById(), drugim natomiast znana już lista argumentów AdvancedAJAX. W przypadku, gdy chcemy jedynie wysłać dane formularza, lista argumentów może pozostać pusta.
-------------------- Łukasz Lach
http://anakin.us/ |
|
|
26.05.2006, 15:20:31
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) |
Nadal nie widzę przyczyny dlaczego assign powinno wywoływać się tylko raz.
Nie pisze np: Cytat zostanie uruchomiony TYLKO I WYŁĄCZNIE podczas PIERWSZEGO naciśnięcia przycisku wysłania formularza Dalej twierdzę, że jest sens wysyłania formularza wiecej niż raz. -------------------- |
|
|
26.05.2006, 19:00:28
Post
#12
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 0 Dołączył: 26.10.2004 Skąd: Rybnik Ostrzeżenie: (0%) |
już samo słówko przecież oznacza przypisz "assign"... przecież to już będzie przypisane do formularza, po co przypisywać jeszcze raz?
-------------------- Hardware: Celeron 3.06, 512 MB DDR
Software: Apache 2.0, MySQL 4.0, php 4.3.1, Zend 5.1, Firefox |
|
|
26.05.2006, 21:12:24
Post
#13
|
|
Grupa: Zarejestrowani Postów: 32 Pomógł: 0 Dołączył: 15.07.2003 Ostrzeżenie: (0%) |
Cytat przecież to już będzie przypisane do formularza, po co przypisywać jeszcze raz? Otóż to. Do wysyłania służy submit() (wyślij), a nie assign() (przypisz) -------------------- Łukasz Lach
http://anakin.us/ |
|
|
Wersja Lo-Fi | Aktualny czas: 30.05.2024 - 02:02 |