Jquery et Ajax

Résolu/Fermé
salyxo Messages postés 10 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 31 janvier 2015 - 31 janv. 2015 à 22:33
 Utilisateur anonyme - 1 févr. 2015 à 23:57
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 :


<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

Utilisateur anonyme
31 janv. 2015 à 23:00
Bonjour

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/
1
salyxo Messages postés 10 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 31 janvier 2015
31 janv. 2015 à 23:49
Alors là... Je dis BRAVO !
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.
0
Utilisateur anonyme > salyxo Messages postés 10 Date d'inscription vendredi 7 janvier 2011 Statut Membre Dernière intervention 31 janvier 2015
1 févr. 2015 à 23:57
De rien :)
0