Aller au contenu

Sujets conseillés

Posté

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,

++

Posté

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 :/

Posté

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 ;)

++

Posté

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

Posté

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

Posté

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";

Posté
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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...