Witam. Posiadam na stronie sklep, w którym jest kilka npc. Od danego npc zależy co można sprzedać. Musze przekazac zmienna id item, oraz id npc.
Z id item nie mam problemu, lecz nie moge przeslac tego 2.
Plik index:
$(document).ready(function(){ $('.view_data').click(function(){ var id = $(this).attr("id"); $.ajax({ url:"ajax/item-details.php", method:"post", data:{id:id}, success:function(data){ $('#id').html(data); $('#dataModal').modal("show"); } }); }); });
<span name="view" value="view" id="<?php http://www.php.net/echo $wiersz["id"]; ?>" class="view_data" /><span class='tooltipEl' id='user_<?= $id ?>'><img src=<?=$obrazek?>></span></span>
$_POST["id"]
Brakuje mi informacji co to jest to NPC i gdzie ono jest "fizycznie" w kodzie. Bo ID itemu to jest to:
data:{id:id, idnpc:idnpc},
Id fizycznie w kodzie jest w tym samym pliku pod zmienna $npc, jeśli zamienię wiersz_id na $npc to przesyłam id npc. A potrzebuję sobie zmienne
Trudno się czyta Twoje posty.
Skoro zmienna $npc jest w tym samym kodzie, to dlaczego nie dodasz jej jako kolejny atrybut do elementu <span>?
Swoją drogą atrybuty, tu atrybut id, nie służy do przechowywania wartości id z bazy danych, ale nadawania unikalnego identyfikatora w drzewie DOM i nie może zaczynać się cyfrą.
Do takich zadań jak Twoje używa się atrybutów data-*.
Problem msm taki, że nie wiem jak dodać ten atrybut w span, I przesłać go data razem z atrybutem id.
Tym kodem co mam teraz po naciśnięciu obrazka, w pliku item-details dostaje tylko atrybut id, a potrzebuję 2 atrybut z id2 np
Problem jest chyba taki, że nie czytasz dokładnie co piszemy.
Rozwiązania są tu:
https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes
http://forum.php.pl/index.php?s=&showtopic=270735&view=findpost&p=1261185
Udało mi się !
A rozwiązanie zrobiłem takie:
$(document).ready(function(){ $('.view_data').click(function(){ const article = document.querySelector("#idnpc"); var id = $(this).attr("id"); var idnpc = article.dataset.idnpc; $.ajax({ url:"ajax/item-details.php", method:"post", data:{id:id, idnpc:idnpc}, success:function(data){ $('#id').html(data); $('#dataModal').modal("show"); } }); }); });
<span name="view" value="view" id="<?php http://www.php.net/echo $wiersz["id"]; ?>" class="view_data" /><article id="idnpc" data-idnpc="<?=$npc?>"></article><span class='tooltipEl' id='user_<?= $id ?>' ><img src=<?=$obrazek?>></span></span>
1. Dlaczego nie dodałeś tego atrybutu do elementu <span>, tylko utworzyłeś nowy?
2. Ten nowy element powinien miec unikalne id, w ten sposób będziesz dla każdego klikniętego <span> wysyłał idnpc z pierwszego <article>
3. Skoro utworzyłeś atrybut data-idnpc z pomocą atrybutuów data-*, to dlaczego nie zmieniłeś analogicznie w <span> id na data-id?
Po pracy spróbuję to zrobić jak piszesz. Podkreślam, że z ajax zapoznałem się 3 dni temu Głównie próbujedziałaćz poradników i gotowców, wtedy więcej kunam. Będę miał jeszcze dużo pytań
Ajax to tylko metoda przesyłania żądania w tle. Tu jeszcze mieszasz dodatkowo natywne metody js const article = document.querySelector("#idnpc"); z jquery.
Jak już, to HTML powinien wyglądać tak:
<http://december.com/html/4/element/span.html name="view" data-id="<?= $wiersz['id'] ?>" data-idnpc="<?= $npc ?>" class="view_data" /><http://december.com/html/4/element/span.html class="tooltipEl" id="user_<?= $id ?>"><http://december.com/html/4/element/img.html src="<?= $obrazek ?>" /></http://december.com/html/4/element/span.html></http://december.com/html/4/element/span.html>
$(document).ready(function() { $(document).on('click', '.view_data', function() { const id = $(this).data('id') || ''; const idnpc = $(this).data('idnpc') || ''; $.ajax({ url: 'ajax/item-details.php', method: 'post', data: { id: id, idnpc: idnpc }, success: function(data) { $('#id').html(data); $('#dataModal').modal('show'); } }); }); });
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)