view
<script type="text/javascript"> $ (document) .ready(function() { $('[name="like"]') .click (function() { var pid = $('[name="pid"]').val(); alert(pid); }); }); </script>
AJAX
<?php for(condition) { ?> <input type="hidden" name="pid" value="<?php echo $data1->id; ?>"> <a href="#" name="like" id="bttHello" >Like <i class="far fa-thumbs-up icon-4x text-default"></i></a> <?php } ?>
Résultat attendu: - Si je clique sur comme une balise d'ancrage, il devrait me montrer un identifiant différent pour différents articles et je ne veux pas recharger ma page.
Résultat réel: - Il me montre le premier identifiant lorsque je clique sur différentes balises similaires de différents articles.
Je suis nouveau dans AJAX. Merci d'avance.
3 Réponses :
vous placez l ' input
et le a
à l'intérieur du div
puis obtenez le frère de a
qui est input
<?php for (condition) { ?> <div> //Your input and a tag here </div> <?php } ?> <script> $('[name="like"]').click(function () { var input = $($(this).siblings("input")[0]); // get the input element var value = input.val(); //value of the input alert(value); }); </script>
var input = $ ($ (this) .find ("input") [0]); donnera également le même résultat.
@SayedMohdAli: non, ce ne sera pas le cas. find ()
recherche des éléments enfants, pas des frères
mais quand dans le cas de div ($ this), il ne cherchera que dans ce div. Je l'ai déjà fait.
Dans ce cas, vous détectez le clic du div
: $ ('div'). On ('click', 'a', function () {var input = $ (this) .find ('input') [0];})
. Ce cas $ (this)
fait référence à l'élément div
, vous pouvez alors rechercher son élément enfant. Ma solution détecte l'événement d'un élément un
, $ (this)
puis fait référence à un élément un
, c'est pourquoi je dois rechercher des frères et sœurs.
d'accord, mais il n'utilise aucun div. donc le frère ne fonctionnera pas.
C'est pourquoi ma réponse dit à OP de mettre input
et a
dans un div
tout en faisant la boucle. Veuillez relire ma réponse
@catcon Maintenant, je veux appeler une fonction qui se trouve à l'intérieur d'un contrôleur avec la valeur que j'ai obtenue. comme ça ------------ $ this-> controller_name-> function_name (value);
Vous souhaitez donc transmettre cette valeur à PHP? Vous devez créer une requête HTTP Get ou Post sur votre serveur. Ensuite, vous pouvez obtenir la valeur en utilisant PHP $ _GET ou $ _POST
@catcon Ici, je ne reçois aucune demande dans mon contrôleur. Aidez moi
Vous définissez le même nom pour toutes les entrées
.
Si vous n'avez pas besoin du champ input
comme masqué, vous pouvez utiliser attribut code> pour définir et obtenir la valeur de votre message.
<script type="text/javascript"> $(document).on('click', '.select_id', function(){ var pid = $(this).attr('data-pid'); alert(pid); }); </script>
Vous pouvez utiliser le nom de la classe pour accéder à l'attribut de la balise d'ancrage.
<?php for(condition) { ?> <input type="hidden" name="pid" value="<?php echo $data1->id; ?>"> <a href="#" name="like" data-pid="<?php echo $data1->id; ?>" class="select_pid" id="bttHello" >Like <i class="far fa-thumbs-up icon-4x text-default"></i></a> <?php } ?>
view
<script type="text/javascript"> $ (document) .ready(function() { $('[name="like"]') .click (function() { $name = $(this).split("#"); var pid = $('pid'+$name[1]).val(); alert(pid); }); }); </script>
AJAX
<?php for($i=0;$i<count($data1);$i++) { ?> <input type="hidden" name="pid#<?=$i?>" value="<?php echo $data1->id; ?>"> <a href="#" name="like#<?=$i?>" id="bttHello" >Like <i class="far fa-thumbs-up icon-4x text-default"></i></a> <?php } ?>
Maintenant je sais où était le problème.
@jarvis d'accord si votre problème est résolu, acceptez la réponse et évaluez également ceux qui vous ont aidé.
Ici, je ne reçois aucune demande dans mon contrôleur. Aidez moi.
veuillez accepter cette réponse et poser une nouvelle question si vous avez un autre problème, partagez maintenant le lien.
@jarvis et partagez également le code complet dans un format approprié dans une nouvelle question afin que nous puissions comprendre. Il est difficile de comprendre les commentaires sans un format approprié et un code complet.
vous n'avez pas donné un identifiant différent à la balise d'ancrage du nom du type d'entrée.
Cette question n'a rien à voir avec
ajax
etcodeigniter
, veuillez mettre à jour votre balise