Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][jQuery][JSON] sprawdzenie i wyświetlanie wartości elementu
Forum PHP.pl > Forum > Przedszkole
@rtur
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?
trueblue
Sprawdź w konsoli przeglądarki (zakładka Sieć) jaką odpowiedź otrzymujesz z żądania ajax.
@rtur
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
trueblue
data[0].wynik
albo nie przesyłaj tablicy, lecz pojedynczy obiekt.
@rtur
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?
trueblue
  1. $('#ArtistName').keydown(function() {
  2. var xhr;



  1. if(xhr!==undefined) xhr.abort();
  2. xhr=$.ajax({
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.