InTech Posté 15 Juin 2006 Partager Posté 15 Juin 2006 Bonjour, je cherche désesperement un moyen de faire fonctionner un code Ajax tout bête, mais aucun résultat; En fait, un de mes scripts affiche des liens vers des documents, et, avant chaque lien, il y a une checkbox (que l'utilisateur final peut utiliser comme "flag"). Il peut donc cocher et décocher cette case, et ainsi savoir si il a lu ou non le document. Donc, ce script (normalement) envoie un action ajax vers un autre script, qui celui-ci enregistre l'état de la case à cocher. Je ne veut pas utiliser de formulaire (les pages sont bien trop longues de contenus à charger, et les utilisateurs finaux (mes employés) n'ont pas le courage de cliquer sur le bouton "soumettre", et comme c'est eux qui me payent...); Donc, je vous fournis mes codes, en esperant que vous pourrez m'aider; HTML (contient les checkbox) <input type="checkbox" name="doc030034941SX" value="1" checked onclick="sndReq('index.php5?ac=sav&name='+this.name+'&value='+this.value);" /> AJAX (JS, contient le code de transsmition) function sndReq(action) { var req = null; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status != 200) { alert('Ajax Error '+ req.status); } } }; req.open('GET', action, false); req.send(null);} PHP (devrait récuperer le tout, mais à toujours des valeurs vident ???) if (isset($_GET['ac']) && $_GET['ac'] == 'sav' && isset($_GET['name'] && isset($_GET['value'])) { echo "$name vaut $value \n";} ce code a l'air de fonctionner, puisque PHP arrive bien à recevoir l'ordre "ac = sav", mais les données sont toujours vident ! (name= ???, et value= ???) J'ai besoin de votre aide, si vous avez un peu de temps à me consacrer, merci à tous, ++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 15 Juin 2006 Partager Posté 15 Juin 2006 A mon avis, ca se joue ici : onclick="sndReq('index.php5?ac=sav&name='+this.name+'&value='+this.value);" /> Tu ne fais pas appel au bon argument. Tu devrais mettre : onclick="sndReq('index.php5?ac=sav&name='+this.name.value+'&value='+this.value.value);" /> Mais.. passes pas trop de temps sur ma réponse :/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
InTech Posté 15 Juin 2006 Auteur Partager Posté 15 Juin 2006 Bonjour Anonymus, j'ai essayé ta méthode, mais ca ne me donne rien de plus... Peut-etre que ceci pourrait m'aider à vous aiguiller : Lorsque je remplace la requete (req.open(...)) par une boite 'alerte' alors là, je vois les résultats correctement; je ne comprend vraiment pas en tous cas merci à toi ++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
ludo88 Posté 15 Juin 2006 Partager Posté 15 Juin 2006 sur quel navigateur tu testes, parce que moi des fois j'ai des problèmes à mon grand desespoir sous ff essaie ie si tu as l'occasion. Ludo Lien vers le commentaire Partager sur d’autres sites More sharing options...
skale Posté 15 Juin 2006 Partager Posté 15 Juin 2006 Salut, peut-être une nouvelle piste, dans le code HTML essaye de remplacer this.value par this.form.elements['doc030034941SX'].value et si tu connais le nom du champ de formulaire autant le passer en brut : <input type="checkbox" name="doc030034941SX" value="1" checked onclick="sndReq('index.php5?ac=sav&name=doc030034941SX&value='+this.form.elements['doc030034941SX'].value);" /> D'ailleurs je ferais tout passer en brut, si le formulaire est construit dynamiquement, construit aussi l'URL (sans rajouter le dynamisme du javascript pour la création de l'URL) : <input type="checkbox" name="doc030034941SX" value="1" checked onclick="sndReq('index.php5?ac=sav&name=doc030034941SX&value=1);" /> Peut-être que tu as abrégé ton code pour le présenter, mais dans le cas contraire je ne suis pas étonné que le fichier PHP ne réponde que " vaut " et il a pourtant tout bien reçu. if (isset($_GET['ac']) && $_GET['ac'] == 'sav' && isset($_GET['name'] && isset($_GET['value'])) { // 2 lignes à ajouter pour afficher $name = $_GET["name"]; $value = $_GET["value"]; echo "$name vaut $value \n";} @+ Skale Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 15 Juin 2006 Partager Posté 15 Juin 2006 Juste pour info, tu n'as pas besoin des 2 lignes suivantes : // 2 lignes à ajouter pour afficher $name = $_GET["name"]; $value = $_GET["value"]; Contentes toi de : echo $_GET['name']." vaut ".$_GET['value']." \n"; Lien vers le commentaire Partager sur d’autres sites More sharing options...
skale Posté 15 Juin 2006 Partager Posté 15 Juin 2006 Juste pour info, tu n'as pas besoin des 2 lignes suivantes : // 2 lignes à ajouter pour afficher $name = $_GET["name"]; $value = $_GET["value"]; Contentes toi de : echo $_GET['name']." vaut ".$_GET['value']." \n"; Personnellement, selon le traitement à faire derrière, je préfère créer des variables. Je voulais faire remarquer que le code PHP tel qu'il nous a été donné ne pouvait pas afficher le résultat souhaité, en supposant que register_globals est désactivé, mais c'est désormais la configuration par défaut et la plus courante et surtout celle recommandée. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant