Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][HTML][PHP]Koszyk Ajax jquery, problem z jquery
redosystem
post 21.01.2020, 12:42:46
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 21.01.2020

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


Witam wszystkich

proszę o pomoc w dość prostej sprawie

Próbuje wykonać prosty koszyk koszyk sesyjny jeżeli mam tylko 1 <form> wszystko działa ale w przypadku zaistnienia na stronie np 2 for działa ale dla pierwszego formularza

to wywołuje w pętli (jest to lista produktów) w form próboeałem dodawać indywidualne ID ale nie wiem jak to później wywołać z pozycji Jquery

  1.  
  2. <?php
  3. $product_array = $db_handle->runQuery("SELECT * FROM koszyk ORDER BY id ASC");
  4. if (!empty($product_array)) {
  5. foreach($product_array as $key=>$value){
  6. ?>
  7.  
  8. <form action="" id="">
  9. <img src="<?php print $generator; ?>/<?php echo $product_array[$key]["image"]; ?>">
  10. <?php echo $product_array[$key]["name"]; ?>
  11. <?php echo $product_array[$key]["price"]; ?>
  12.  
  13. <input type="hidden" name="action" value='add'>
  14. <input type="hidden" name="code" value='<?php echo $product_array[$key]["code"]; ?>'>
  15. <input type="text" class="product-quantity" name="quantity" value="1" size="2" />
  16. <input type="button" id="przycisk" value="dodaj do koszyka" />
  17.  
  18. </form>
  19.  
  20. <?php } } ?>
  21.  


po czym chce przesłać to ajax'em

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $("#przycisk").click(function() {
  4.  
  5. var formData = {action:""+$('input[name=action]').val(), quantity:""+$('input[name=quantity]').val(), code: ""+$('input[name=code]').val()};
  6.  
  7. //alert($('input[name=code]').val());
  8.  
  9. $.ajax({
  10. url: "dokoszyka.php",
  11. type: "POST",
  12. data: formData,
  13. success: function(msg) {
  14. $("#kontener").text(msg);
  15. $("#shopping-cart").load("product-grid.php");
  16. }
  17. });
  18. });
  19. });
  20. </script>


Z góry dziękuje za pomoc
Go to the top of the page
+Quote Post
nospor
post 21.01.2020, 12:46:20
Post #2





Grupa: Moderatorzy
Postów: 35 122
Pomógł: 5882
Dołączył: 27.12.2004




Po pierwsze skoro lecisz ajaxem, to zadne form ci nie sa potrzebne.

Po drugie, kazdy przycisk ma miec unikalne ID, albo nawet lepiej, zamiast ID nadawaj klasse potem
nie $("#przycisk").click(function() {
a: $(".jakas_klasa").click(function() {

A pozniej w tej function, pobieraj dane elementow z tego bloku co jest przycisk i po sprawie


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

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"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
redosystem
post 21.01.2020, 13:28:13
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 21.01.2020

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


nie za bardzo wiem tylko jak mam przerobić tą linijkę aby brała dane z bloku

  1. var formData = {action:""+$('input[name=action]').val(), quantity:""+$('input[name=quantity]').val(), code: ""+$('input[name=code]').val()};


próbowałem:

  1. var formData = $(this).serialize(),


ale nie działa
Go to the top of the page
+Quote Post
viking
post 21.01.2020, 13:39:25
Post #4





Grupa: Zarejestrowani
Postów: 5 486
Pomógł: 934
Dołączył: 30.08.2006

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


this odnosi się do klikniętego przycisku a nie formularza. Możesz coś na kształt $(this).parents('form'). Chociaż lepiej łapać zdarzenie submit.
I debuguj sobie console.log(this); żeby zobaczyć z jakim elementem pracujesz.

Ten post edytował viking 21.01.2020, 13:40:03


--------------------
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: 22.02.2020 - 17:54