Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ajax nie zbiera danych przy pętlach.
Forum PHP.pl > Forum > XML, AJAX
Wishermil
Witam!

Mam taki kod:

  1. <script type="text/javascript">
  2. $(window).load(function()
  3. {
  4. $("#button2").click(function()
  5. {
  6. var user_id = $('input[name=user_id]').val();
  7. var cat = $('input[name=cat]').val();
  8. var id = $('input[name=id]').val();
  9. $.ajax({
  10. url: 'funkcje.php',
  11. data:
  12. {
  13. funkcja: "2",
  14. cat: cat,
  15. id: id,
  16. user_id: user_id
  17. },
  18. type: 'POST',
  19. success: function(output)
  20. {
  21. $("#wyniki").append(output);
  22. }
  23. });
  24. });
  25. });
  26. </script>
  27.  


Następnie wyświetlam w pętli wyniki z bazy danych:

  1. while($gielda = mysql_fetch_array($query))
  2. {
  3. if(!in_array($gielda['cat'],$posiadane))
  4. {
  5. $owner_name = mysql_fetch_array(mysql_query("SELECT * FROM `tablica_users` WHERE `id` =".$gielda['owner']));
  6. echo '
  7. <tr class="'.$gielda['cat'].'">
  8. <td><center>'.$owner_name['name'].'</td>
  9. <td><center>'.$owner_name['user'].'</td>
  10. <td><center><input type="button" id="button2" value="KUPUJE" /></td>
  11. <input type="hidden" name="id" value="'.$gielda['id'].'" />
  12. </tr>
  13. ';
  14. }
  15. }



Chodzi o to, że jak kliknę w button "KUPUJE" tylko przy 1 wyświetlonym wyniku, to prawidłowo wykonuje AJAXA.
Drugi, albo kolejny wyświetlony w pętli wynik i przy nim "KUPUJE" nie powoduje żadnej reakcji.

Jak zrobić, żeby AJAX czytał te dane:

<input type="button" id="button2" value="KUPUJE" /></td>
<input type="hidden" name="id" value="'.$gielda['id'].'" />

stosownie do każdego wyświetlonego w pętli wyniku?
com
[JAVASCRIPT] pobierz, plaintext
  1. $(window).load(function()
[JAVASCRIPT] pobierz, plaintext
wykonuje się tylko raz smile.gif
Wishermil
Rozumiem!!!

To jak sugerowałbyś to zamienić?
nospor
Cytat(com @ 5.11.2013, 21:52:29 ) *
[JAVASCRIPT] pobierz, plaintext
  1. $(window).load(function()
[JAVASCRIPT] pobierz, plaintext
wykonuje się tylko raz smile.gif

No i tak ma byc.... toz to jest kod, ktory ma sie wykonac po zaladowaniu strony i on ma sie wykonac tylko raz.

Problem lezy gdzie indziej, a konkretnie tutaj:
$("#button2").click(function()
bardzo czesto popelniany blad, gdzie ludzie generuja cala mase przyciskow o tym samym ID a potem sie dziwią, ze dziala tylko pierwszy.... ID to ID, ma byc unikalne dla kazdego elementu a nie takie samo.
Zamiast dla przycisku nadawac ID nadawaj mu klase button2 a potem wystarczy:
$(".button2").click(function()

Musisz jednak jeszcze zmodyfikowac kod funkcji, ktora pobiera dane dla ajax, by pobierala dane z inputow, ktore są przy danym przycisku kupuje smile.gif No ale to praca dla Ciebie. Pomysl troche
Wishermil
Usiądę do tego pod wieczór - dzięki za wskazówki.

Czyli pierwsza czynność, to zmienić:

<input type="button" id="button2" value="KUPUJE" />

na

<input type="button" class="button2" value="KUPUJE" />

questionmark.gif

Dobrze zrozumiałem?

nospor
Tak. Potem zamienic
$("#button2").
na
$(".button2").

A jeszcze potem kod tego co jest w $(".button2").click
smile.gif
Wishermil
Faktycznie - teraz oba buttony reagują, jednak nie mam bladego pojęcia jak to dalej rozwiązać. To wnętrze funkcji.

$(".button2").click

Ktoś byłby gotowy mi pomóc?


Nikt nie zna odpowiedzi na moje pytanie?
nospor
W click jQuery(this) odnosi sie do kliknietego buttona. Majac jQuery(this) dobierasz sie do pierszego TR. Majac pierwsze TR robisz FIND i znajdujesz interesujace ci inputy
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.