2
votes

Comment gérer plusieurs requêtes à l'aide d'une fonction dans AJAX?

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&nbsp;<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.


2 commentaires

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 et codeigniter , veuillez mettre à jour votre balise


3 Réponses :


0
votes

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>


9 commentaires

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



0
votes

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&nbsp;<i class="far fa-thumbs-up icon-4x text-default"></i></a>
<?php 
}
?>


0 commentaires

0
votes

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&nbsp;<i class="far fa-thumbs-up icon-4x text-default"></i></a>
<?php 
}
?>


5 commentaires

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.