Kilka dni temu napisałem skrypt, który elegancko wykonuje logowanie. Po wykonaniu logowania ładnie się wyłączało koienko gdzie się wpisywało dane. I dzisiaj gdy poprawiałem uwierzytelnianie poprawiłem pomyślałem, że zrobię jeszcze automatyczne zanikanie zaciemnienia, które pojawiału się przy kliknięciu na loguj się razem z oknem logowania.
Niestety, gdy wpisałem także $('#zaciemnienie').fadeOut(); do skrupty success w funkcji ajax. Wszystko stanęło. Myslałem, że to po prostu coś z tym zanikaniem zaciemnienia i zacząłem z nim kombinować.
Po wielu nieudanych próboach zrobienia tego efektu zdecydowałem, że cofnę do pierwotnego stanu - czyli z przed zmian, i zrobię to kiedy indziej. Niestety, kiedy powróciłem nawet do tamtego, cały efekt w ogóle przestał działać. I okienko logowania zrobiło się całkowicie nieaktywne.
Co najdziwniejsze, żadne efekty nie pojawiają się po pozytwynej próbie logowania. Natomiast, gdy wpisuje się złe dane, wszystkie funkcje działają.
if(nazwaWynik == true && hasloWynik == true){ $.ajax({ type :'POST', url :'logowanie.php', dataType :'json', data :{ opcja :'wykonajLogowanie', nazwaUzytkownika :nazwaUzytkownika, hasloUzytkownika :hasloUzytkownika }, success: function(odpowiedz){ // *2 if(odpowiedz.wynikInicjacji == false){ $('p[name="bladLogowania"]').html(odpowiedz.blad); } else if(odpowiedz.wynikInicjacji == true){ // problem zaczyna się właśnie tutaj. *1 $('#oknoLogowania').delay(3000).fadeOut(); } } }); } else{ $('p[name="bladLogowania"]').html(blad); } });
*1 - Mimo iż skrypt php przekazuje prawidłowo true, to warunek else if i tak jego nie odczytuje. Natomiast false odczytuje i wykonuje polecenie po spełnieniu warunku.
Próbowałem także to zamienić na zwykłe else lecz też nic to nie dało.
*2 - Zamieniłem także wynik 'success' na 'complete', który również nie potrafił wykonać polecenia true, a false jak najbardziej.