Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ajax nie zbiera danych przy pętlach.
Wishermil
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.04.2009

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


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?

Ten post edytował Wishermil 5.11.2013, 21:14:38
Go to the top of the page
+Quote Post
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


[JAVASCRIPT] pobierz, plaintext
  1. $(window).load(function()
[JAVASCRIPT] pobierz, plaintext
wykonuje się tylko raz smile.gif
Go to the top of the page
+Quote Post
Wishermil
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.04.2009

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


Rozumiem!!!

To jak sugerowałbyś to zamienić?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wishermil
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.04.2009

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


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?

Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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

A jeszcze potem kod tego co jest w $(".button2").click
smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wishermil
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.04.2009

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


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?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 - 17:51