Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX][JavaScript]Problem z odbieraniem danych a wywołania AJAXa
sebap123
post
Post #1





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Mam pewien problem ze swoim skryptem. Umieściłem w nim weryfikację e-mail przy pomocy skryptu php. Z formularza do skryptu dane przy pomocy skryptu w jQuery i ajaxa przechodzą do skryptu.
Generalnie przechodzą i są sprawdzane poprawnie. Problem polega na tym, że nie wiem jak dane przychodzące sprawdzić i coś na tej bazie zrobić.

fragment kodu o który mi chodzi wygląda następująco:
[JAVASCRIPT] pobierz, plaintext
  1. function validateEmail()
  2. {
  3. var text = email.val();
  4. var flag = "";
  5. if(email.val().length<5)
  6. {
  7. alert("za krotki mail");
  8. return false;
  9. }
  10. var request = $.ajax({
  11. type:"POST",
  12. url:"test2.php",
  13. data:"opcja=email&wartosc="+text,
  14. success:function(data){
  15. if(data=="true")
  16. {
  17. flag="correct";
  18. alert("1."+flag);
  19. }
  20. },
  21. error:function(XMLHttpRequest, textStatus, errorThrown)
  22. {
  23. alert("Wystapił bład");
  24. }
  25. });
  26. request.fail(function(){alert("Wystąpił błąd");});
  27. if(flag=="correct")
  28. alert("ok");
  29. else
  30. alert("2."+flag);
  31. }
[JAVASCRIPT] pobierz, plaintext

Jak dla mnie wszystko działa tzn. wysyłam dane do pliku test2.php a następnie dzięki funkcji przy atrybucie sukces odbieram dane i jeśli jest true to ustawiam flagę. Potem, jeśli flaga jest correct to kończę funkcję z wynikiem true.
Rzeczywistość jest jednak inna - gdy wykonuję skrypt to zawsze najpierw wywołany zostaje alert z nr 2 a dopiero potem z nr 1 czyli tak jakby kod był wykonywany od dołu i dlatego nigdy flag nie jest przypisany.

Tutaj jest cała strona na której to testuje:
http://sebastianperyt.pl/javascript/testJQ.html

Będę wdzięczny za podpowiedzi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sebap123
post
Post #2





Grupa: Zarejestrowani
Postów: 253
Pomógł: 1
Dołączył: 26.08.2009
Skąd: Szczecin

Ostrzeżenie: (10%)
X----


Dzięki za pomoc. Własnie potrzebowałem opinii kogoś kto już tego rozwiązania używa. Problem rozwiązany.

EDIT:

Niestety muszę umieścić edita z powtórzeniem pytania, lub jego niewielka zmianą. Zacząłem teraz testować walidację z ajaxem wysyłanym z parametrem async:false, czyli zapytanie jest wysyłane synchronicznie. W moim wypadku niestety skrypty sprawdzające (podłączenie do bazy w celu sprawdzenia loginu czy emaila, a także sprawdzenie emaila na podstawie checkdnsrr) trwa na tyle długo, że jest odczuwalne to na stronie - rzeczywiści powoduje około sekundowe zawieszenie.
Wyjście jakie przyszło mi do głowy to puszczenie go jednak w tle i dodanie np jakiegoś gifa z animacja ładowania, tyle tylko, że nie wiem jak to dodać do ajaxa, żeby się wykonywało w czasie oczekiwania na wynik i nie wiem jak wtedy na bazie wyniku zapytania zwrócić wynik z funkcji validateEmail.

Czy może mi ktoś coś doradzić?

Ponawiam swoją prośbę o pomoc w tym temacie. Jeszcze raz przeanalizowałem problem i doszedłem do wniosku, że bez działania asynchronicznego nie mam zielonego pojęcia jak poprawnie odebrać wynik z funkcji validateEmail(), a z asynchronicznym działaniem niestety zawieszanie strony jest zbyt znaczące. Czy ktoś już miał może taki problem i może coś poradzić?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 17:45