Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z obsluga eventów
jacobson
post
Post #1





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




[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ą.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
jacobson
post
Post #3





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przecież błąd możesz przesłać jako odpowiedź z serwera...

Nie rozumiem trochę teraz problemu...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
jacobson
post
Post #5





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Albo synchronicznie, albo tak, jak mówiłem - ustaw flagę na atrybucie, bo $.ajax jest wykonywane asynchronicznie, czyli reszta kodu leci niezależnie.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
jacobson
post
Post #7





Grupa: Zarejestrowani
Postów: 468
Pomógł: 36
Dołączył: 14.12.2010

Ostrzeżenie: (0%)
-----


A czy moge poprosic o jakas podpowiedz bo nie znam sie na tyle na jQuery. Pod jakim haslem moge znalezc takie zagadnienia ?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://forum.php.pl/index.php?showtopic=17...st&p=871653


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 11:45