Jquery et Ajax
Résolu
salyxo
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je travaille sur un script qui doit faire ceci :
Avec PHP et une base de données, je crée une liste d'items.
Pour chacun des items, j'aimerais, au clic sur un bouton (ou un lien) qu'une popup s'ouvre en jquery (pas de rechargement de page) avec le détail de l'item.
Donc, chaque item a un ID différent.
Pour Ajax et jquery, pas de souci, ça fonctionne.
L'ennui, c'est que :
- chaque déclencheur comporte un ID différent, mais la variable passée par Ajax semble être toujours la même...
Voici le code JS :
Voici le code HTML
Le code PHP n'a pas vraiment d'importance, mais le voici en simplifié :
Lorsque je clique su l'un ou l'autre des boutons, il me retourne invariablement le value du premier formulaire.
Voilà... Pas d'insultes s'il vous plait, je commence jQuery et JavaScript n'est pas mon fort...
Merci à tous
Je travaille sur un script qui doit faire ceci :
Avec PHP et une base de données, je crée une liste d'items.
Pour chacun des items, j'aimerais, au clic sur un bouton (ou un lien) qu'une popup s'ouvre en jquery (pas de rechargement de page) avec le détail de l'item.
Donc, chaque item a un ID différent.
Pour Ajax et jquery, pas de souci, ça fonctionne.
L'ennui, c'est que :
- chaque déclencheur comporte un ID différent, mais la variable passée par Ajax semble être toujours la même...
Voici le code JS :
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function($){
$('.ajax').click(function(e){
e.preventDefault();
$.ajax({
type:"GET",
url:"voir.php",
data:'data='+$('.champ').val(),
dataType:"html",
error:function(msg){ alert( "Error !:"+msg ); },
success:function(affichage)
{
$('#destination').html(affichage);
}});
});
});
</script>
Voici le code HTML
<form>
<input name="champ" type="text" class="champ" value="Bonjour" />
<input type="submit" value="tester" class="ajax" />
</form>
<form id="form01">
<input name="champ" type="text" class="champ" value="Bonjour01" />
<input type="submit" value="tester" class="ajax" />
</form>
Le code PHP n'a pas vraiment d'importance, mais le voici en simplifié :
<?php
header('Content-type: text/html; charset=iso-8859-1');
if (isset($_GET['data'])) { $data=$_GET['data']; } else { $data=""; }
if ($data!="") { echo $data."<br />"; }
echo "Test de texte";
?>
Lorsque je clique su l'un ou l'autre des boutons, il me retourne invariablement le value du premier formulaire.
Voilà... Pas d'insultes s'il vous plait, je commence jQuery et JavaScript n'est pas mon fort...
Merci à tous
1 réponse
Bonjour
Le problème vient de là :
En effet, $('.champ') te rend DEUX champs car tu en as deux qui ont la classe '.champ', et jquery connaît toute ta page, il n'a aucune raison de s'arrêter au formulaire que tu as cliqué.
ensuite, le .val() te rend la valeur du PREMIER élément de ta sélection
voir la doc :
https://api.jquery.com/class-selector/
et
https://api.jquery.com/val/
Le problème vient de là :
data:'data='+$('.champ').val()
En effet, $('.champ') te rend DEUX champs car tu en as deux qui ont la classe '.champ', et jquery connaît toute ta page, il n'a aucune raison de s'arrêter au formulaire que tu as cliqué.
ensuite, le .val() te rend la valeur du PREMIER élément de ta sélection
voir la doc :
https://api.jquery.com/class-selector/
et
https://api.jquery.com/val/
Je ne suis pas du genre à aller poser des questions sur les forums car j'aime apprendre, donc je lis. Mais en désespoir de cause et surtout ne comprenant plus, je me suis résolu à la poser la question.
Moralité : une réponse en moins d'une heure et... une réponse éclairante !
J'ai modifié mon code en lisant les deux liens fournis. Cela semble fonctionner à merveille.
Merci beaucoup, Le père.