![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 4 Dołączył: 18.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam skrypt, który waliduje dane wprowadzane w formularzu. W momencie klknięcia w button wykonywane jest przejście po określonych z góry polach w celu sprawdzenia poprawności wprowadzonych danych. Jednym z pól jest pole "e-mail". Pobierana jest z niego wartość i wysyłana do pliku PHP przez ajax celem sprawdzenia dostępności e-mail. Jeśli adres jest zajęty, to do znacznika <span id="info_nazwapolainput"></span> dodawany jest kolejny znacznik z klasą ".formInfo". Na koniec wykonuje się sprawdzenie, czy istnieje na stronie znacznik o podanej wyżej klasie. Jeżeli nie występuje, to znaczy że formularz wypełniono poprawnie. Cały problem w tym, że warunek wykonuje się przed otrzymaniem danych zwrotnych z ajax, tak jakby skrypt nie czekał wcale na nie tylko leciał drugim wątkiem dalej. Kod wygląda w ten sposób: Kod checkPersonal(true); // walidowanie pól // od razu wykonuje się to co niżej, zamiast checkPersonal skonczy dzialanie // tj otrzyma dane zwrotne z pliku php przez ajaks i wyswietli na stronie znacznik z klasa .formInfo var errors = errorExists2(); if (errors) { goToFirstError(); } else { // submit() // skutkiem tego wykonuje się zawsze ten tu submit nawet jesli w errors jest 0. } Czemu tak się dzieje i co z tym zrobić? Prosze o podpowiedź. PS Efekt taki, że za każdym razem tak jakby nie wykrywało błędów. Jak nałoże setTimeout() przed warunkiem to działa, ale nie cce w ten sposób.. PS2 Wystepowanie .formInfo sprawdzam przez .length Ten post edytował Inscure 27.03.2012, 17:09:55 -------------------- eXtreme-Fusion CMS - polski, darmowy system zarządzania treścią z rozbudowanym wsparciem technicznym.
|
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 18 Dołączył: 11.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie ajax jest ustawiony na asynchroniczny tz:
trzeci parametr to wałsnie komunikacja asynchroniczna, i teraz masz dwie opcje, albo zmienisz ją na synchroniczną przez wpisanie false(odradzam), albo dalsza część walidacji będzie startować dopiero kiedy ajax zwróci wartość. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 4 Dołączył: 18.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
No właśnie ja chce żeby startowała dopiero jak ajaks zwróci dane, a jest odwrotnie, startuje asynchronicznie.
Chyba chciałeś na koniec napisac, że nie zmieniajac (zostawiajac true) będzie startować zanim ajaks zwróci dane, wtedy rozumiem co miałeś na mysli? Ten post edytował Inscure 27.03.2012, 18:50:06 -------------------- eXtreme-Fusion CMS - polski, darmowy system zarządzania treścią z rozbudowanym wsparciem technicznym.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 106 Pomógł: 18 Dołączył: 11.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem jak u ciebie wygląda funkcja odpowiedzialna za ajax, ale można w niej wprowadzić tak zwanny callback, czyli funkcje wykonywaną po zakończeniu transmisji, chodzi mi o to, żebyś kod walizacji umieścił w tym callbacku.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:33 |