Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][jQuery][JSON] sprawdzenie i wyświetlanie wartości elementu
@rtur
post 21.11.2014, 01:06:28
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Witam,
  1. $('#ArtistName').click(function() {
  2. $('#artistWyslano').attr('disabled', 'disabled');
  3. var name = $('#ArtistName').val();
  4. if (name.length < 3) {
  5. $('#ArtistName').blur(function (e) {
  6. var artist = $(this).val();
  7. $.ajax({
  8. url:'/ajax/sprawdz-artyste.php',
  9. type: 'POST',
  10. data:{'artist':artist},
  11. dataType: 'json',
  12. success: function(data) {
  13. if(data.wynik=='nie'){
  14. $('#status').html(data.wiadomosc);
  15. }
  16. else if(data.wynik=='tak'){
  17. $('#status').html(data.wiadomosc);
  18. $('#artistWyslano').removeAttr('disabled');
  19. }
  20. }});
  21. });
  22. };
  23. });

plik json:
  1. [{"wynik":"tak","wiadomosc":"Zaproponowany artysta nie istnieje"}]


Chciałbym uaktywnić przycisk submit formularza, id #artistWyslano dopiero wtedy jak element wynik w pliku json będzie miał wartość nie, a w elemencie div #status wstawić wartość znajdującą sie w elemencie wiadomosc z pliku json, tym czasem mimo usilnych prób, przycisk submit pozostaje nieaktywny a zawartość diva #status pozostaje bez zmian.

Mogę prosić o wskazówkę gdzie popełniam błąd że to nie działa prawidłowo?

Ten post edytował @rtur 21.11.2014, 07:46:55


--------------------
Artur
Go to the top of the page
+Quote Post
trueblue
post 21.11.2014, 08:37:16
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


Sprawdź w konsoli przeglądarki (zakładka Sieć) jaką odpowiedź otrzymujesz z żądania ajax.


--------------------
Go to the top of the page
+Quote Post
@rtur
post 21.11.2014, 10:27:17
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


W chrome zakładka Network->Response
Kod
[{"wynik":"tak","wiadomosc":"Zaproponowany artysta nie istnieje"}]

http://www.fotosik.pl/pokaz_obrazek/1eb02202a3b5ac67.html
http://www.fotosik.pl/pokaz_obrazek/de420613837973eb.html


--------------------
Artur
Go to the top of the page
+Quote Post
trueblue
post 21.11.2014, 10:38:07
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


data[0].wynik
albo nie przesyłaj tablicy, lecz pojedynczy obiekt.


--------------------
Go to the top of the page
+Quote Post
@rtur
post 23.11.2014, 07:48:59
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Dzięki powyższe działa jak chciałem, ale w międzyczasie wynikł jeszcze jeden problem.
  1. $('#ArtistName').click(function() {
  2. // To Disable Submit Button
  3. $('#artistWyslano').attr('disabled', 'disabled');
  4. // Validating Fields
  5. var name = $('#ArtistName').val();
  6. if (name.length > 4) {
  7. $('#ArtistName').blur(function (e) {
  8. var artist = $(this).val();
  9. $.ajax({
  10. url:'/ajax/sprawdz-artyste.php',
  11. type: 'POST',
  12. data:{'artist':artist},
  13. dataType: 'json',
  14. success: function(data) {
  15. if(data[0].wynik=='nie'){
  16. $('#status').html(data[0].wiadomosc);
  17. } else if(data[0].wynik=='tak'){
  18. $('#status').html(data[0].wiadomosc);
  19. $('#artistWyslano').removeAttr('disabled');
  20. }
  21. }});
  22. });
  23. };
  24. });

Chciałbym aby po wpisaniu minimalnie 4 znaków w pole #artistName odpalało ajaxa z zapytaniem, po to dałem warunek if (name.length > 4), ale on działa dopiero za 2 razem tzn wpisze tekst w pole, opuszczę to pole nic się nie dzieje, dopiero jak drugi raz postawie kursor w tym polu i z niego wyjdę to odpala ajaxa. W czym tkwi problem?


--------------------
Artur
Go to the top of the page
+Quote Post
trueblue
post 23.11.2014, 08:24:08
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


  1. $('#ArtistName').keydown(function() {
  2. var xhr;



  1. if(xhr!==undefined) xhr.abort();
  2. xhr=$.ajax({


--------------------
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 Wersja Lo-Fi Aktualny czas: 4.05.2025 - 07:06