Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z obsluga eventów
Forum PHP.pl > Forum > XML, AJAX > AJAX
jacobson
Witam, mam taki problem... na mojej stronie z bazy danych generowane sa w foreachu linki jeden po drugim (kazdy link o takiej samej klasie). Teraz kazdy link ma funkcje onclick ktora wywoluje funkcje $.ajax ktora przesyla dane do MySQL. Procz tej funkcji mam rowniez funkcje .click ktora za nacisnieciem danego przycisku ma spowodowac jego zanikniecie, zmiane tresci i pojawianie sie znowu.
(Tak jak system zapisywania sie. Jezeli uzytkownik jest niezapisany to jest buton zielony jak sie zapisuje to znika zielony i pojawia sie czerwony).
Dalej idac, Moja funkcja $.ajax ma parametr success ktory odpowiada za bledy (nie zalogowany uzytkownik, za malo kasy na koncie. Funkcje php w przypadku bledu wy-echo-wuja blad i ta funkcja success ropoznaje czy ten echo to jest blad i jak tak to wyswietla alert).

Teraz moj problem polega na tym ze jezeli uzytkownik na przyklad nie ma wystarczajacej ilosci pieniedzy na koncie to po nacisnieciu przycisku pojawi sie alert odpowiedni jednak wciaz zostanie wykonana funkcja click ktora spowoduje ze przycisk zielony zniknie i pojawi sie czerwony (po odswiezeniu wroci do normy bo tak naprawde nie zostal zapiasny uzytkownik).

Dlatego wlasnie kieruje tutaj moje pytanie. W jaki sposob moge ograniczyc ta funkcje click, ze jezeli wystapi blad to zeby nie wywolywal sie. Z gory dziekuje za pomoc
pozdrawiam
erix
[JAVASCRIPT] pobierz, plaintext
  1. $(selektor).data('zmienna', 'wartosc');
[JAVASCRIPT] pobierz, plaintext

I przy kliknięciu sprawdzasz zawartość tej zmiennej. Jesli jest błąd - przerywasz, jeśli nie - wczytujesz i ew. ustawiasz zmienną.
jacobson
no ok to rozumiem ale jak z funkcji $.ajax pobrac "wartosc" bledu. bo nie wiem czy funkcja FadeOut (ktora wywolywana jest pierwsza i to ona moglaby byc zablokowana) moze byc w taki sam sposob sprawdzona... ale jezeli da sie sprawdzic to co "zwraca" funkcja $.ajax w innym zapytaniu to moge zrobic zwyklego if-a. Zauwazylem przy wywolywaniu ze funkcja click wywolywana jest jednoczesnie z funkcja $.ajax.
erix
Przecież błąd możesz przesłać jako odpowiedź z serwera...

Nie rozumiem trochę teraz problemu...
jacobson
no bo mam funkcje $.ajax i osobno funkcje click i w tej funkcji click musze sprawdzic to co zwroci funkcja $.ajax. A nie wiem jak sprawdzic co zwraca taka funkcja

  1. function enroll(id){
  2. $(document).ready(
  3. function(){
  4. $.ajax({
  5. url: 'http://localhost/index.php/main/enroll_ajax/'+id,
  6. datatype: 'json',
  7. success: function(data){
  8. if(data == 'First log in!' || data == 'Insufficient credits'){
  9. alert(data);
  10. }
  11. }
  12. });
  13. }
  14. );
  15. $('.content_main_entry_enroll_1').click(function(){
  16. $('a',this).removeAttr("onclick");
  17. if($('a',this).text() != 'Zapisany'){
  18. $('.user_credits').fadeOut(200, function(){
  19. $('.user_credits').load('main/get_credits_ajax');
  20. });
  21. $('.user_credits').fadeIn();
  22. $(this).fadeOut(200, function(){
  23. $(this).html('<a href="#">Zapisany</a>');
  24. $(this).fadeIn(300);
  25. });
  26. }
  27. });
  28. }


I nie wiem jak sprawdzic ten warunek. Z ajax wewnatrz funkcji .click. Moze jakies naprowadzenie ? smile.gif tongue.gif
erix
Albo synchronicznie, albo tak, jak mówiłem - ustaw flagę na atrybucie, bo $.ajax jest wykonywane asynchronicznie, czyli reszta kodu leci niezależnie.
jacobson
A czy moge poprosic o jakas podpowiedz bo nie znam sie na tyle na jQuery. Pod jakim haslem moge znalezc takie zagadnienia ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.