Valeur avec ajax et php [Résolu]

Signaler
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014
-
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014
-
Bonjour,

J'ai une fonction qui donne une couleur à un id avec getElementById
voici le code :

document.getElementById('titre').style.color = value;
var ZoneCouleur1 = value;

Je souhaite récupérer la valeur Zonecouleur1 dans une fonction Ajax
avec ce programme :

function envoyerDonnees (){
var req = creerInstance();

/* On récupère la valeur ZoneCouleur1, mais là j'ai un doute...*/
var donnees = ZoneCouleur1;

req.onreadystatechange = function(){
/* Si l'état = terminé */
if(req.readyState == 4){
/* Si le statut = OK */
if(req.status == 200){
/* On affiche la réponse */
alert(req.responseText);
}else{
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
}
/*Ici on retrouve la variable et ZoneCouleur1 et donnees*/
req.open("GET", "serveur.php?ZoneCouleur1="+donnees, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
/* On met à null car c'est une commande GET*/
req.send(null);
}

et ensuite pour finir j'appelle la valeur donnees dans le fichier serveur.php

<?php
echo "donnees recues: ".$_GET["donnees"];
?>


Tel quel ça ne fonctionne pas, que dois-je faire ? Et est-ce bien la bonne méthode pour le projet blog-machine ?

8 réponses

Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Bonjour,

Tu fais :
$_GET["donnees"];


Alors que tu as nommé ta variable (dans ton URL ) : ZoneCouleur1
Messages postés
1787
Date d'inscription
vendredi 9 mai 2008
Statut
Non membre
Dernière intervention
9 juin 2021
131
bonjour

tu envoie ou tu reçois des donné ?
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

C'est un get donc j'envoie
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

bonjour,

non je suis désoler, j'ai essayer toutes les combinaisons et ça ne marche pas.

reprenons:

function CouleurDuFond1(value) {

document.getElementById('titre').style.color=value;
var ZoneCouleur1 = value;
}

où ma variable est ZoneCouleur1

function envoyerDonnees (){
var req = creerInstance();
/* On récupère la variable ici */

var ZoneCouleur1 = MaValeur;

req.onreadystatechange = function(){
/* Si l'état = terminé */
if(req.readyState == 4){
/* Si le statut = OK */
if(req.status == 200){
/* On affiche la réponse */
alert(req.responseText);
}else{
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
}

req.open("GET", "serveur.php?MaValeur"+ZoneCouleur1, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
/* On met à null car c'est une commande GET*/
req.send(null);
}
le fichier PHP

<?php
echo "donnees recues: ".$_GET["MaValeur"];
?


Et j'ai beau chamboulé le problème dans tous les sens ça ne fonctionne pas
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Alors reprenons :

Tu avais :
req.open("GET", "serveur.php?ZoneCouleur1="+donnees, true);


Le nom de ta variable était donc : ZoneCouleur1 !

Maintenant tu as :
  req.open("GET", "serveur.php?MaValeur"+ZoneCouleur1, true);

Donc ta variable c'est bien : MaValeur.
Par contre... tu as oublié un "="
  req.open("GET", "serveur.php?MaValeur="+ZoneCouleur1, true);


Le souci.. c'est que tu fais :
var ZoneCouleur1 = MaValeur;

Mais... dans ta fonction.. MaValeur... ne vaut rien... elle n'est pas initialisée...

Mais si à la place tu faisais :
 var ZoneCouleur1 =document.getElementById('titre').style.color=value;

Je pense que ce serait mieux...



Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Bonjour,

C'est peut être mieux mais ce n'est pas la réponse complète (suspense)
effectivement là j'avais bien oublié un égal

req.open("GET", "serveur.php?MaValeur="+ZoneCouleur1, true);

Tu dis il faut mieux ça pour initialisé ma valeur
var ZoneCouleur1 = document.getElementById('titre').style.color=value;
Si je la gardes telle quelle dans mon code à l'endroit ou elle est demandée c'est a dire ici :

function envoyerDonnees(){
var req = creerInstance();
/* On récupère la variable ici */
var ZoneCouleur1 = document.getElementById('titre').style.color=value;

req.onreadystatechange = function(){
/* Si l'état = terminé */
if(req.readyState == 4){
/* Si le statut = OK */
if(req.status == 200){
/* On affiche la réponse */
alert(req.responseText);
}else{
alert("Error: returned status code " + req.status + " " + req.statusText);
}
}
}

req.open("GET", "serveur.php?MaValeur="+ZoneCouleur1, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
/* On met à null car c'est une commande GET*/
req.send(null);
}

mais là je ne peut pas la placer dans ma fonction ajax ou avec 1 ? 2 ? 3 parenthèse de plus donc une fonction dans une autre. et si on ne la place pas avec la fonction entière là ça na marche plus du tout

alors faut-t-il faire ceci :

var ZoneCouleur1 = document.getElementById('titre').style.color=value;
var ZoneCouleur1 = MaValeur

J'ai essayé les trois formules et ça coince quelque part mais où ?
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Une erreur de frappe s'est glissée dans le code..
Il faut retirer le =value à la fin de la ligne :
var ZoneCouleur1 = document.getElementById('titre').style.color;






Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Bonsoir,

Merci pour ta patience ça marche impeccable je récupère très bien ma valeur dans une boite d'alerte en ajax
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Donc ta question est résolue ???
N'oublies pas de clore le sujet....!!!
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
n'oublis pas de tester tes valeurs PHP GET ou POST :

$couleur = isset($_GET['couleur']) ? $_GET['couleur'] : false;
if($couleur){
// traitement
echo '1';
} else {
echo '0';
}


on peu se faire une petite fonction sympa (toujours avoir un php en include tools.php) :

<?php
class Tools {
public static function GetParam($param, $default=false){
return isset($_GET[$param]) ? $_GET[$param] : $default;
}
public static function PostParam($param, $default=false){
return isset($_POST[$param]) ? $_POST[$param] : $default;
}
}
?>

et donc :


<?php
require_once("tools.php");

$couleur = Tools::GetParam('couleur', '#000000');
?>
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Bonsoir,

Est-ce que tu pourrais un peu préciser ton intention avec include.tools.php et sur le traitement à faire avec ce code, parce que là, je suis un peu perdu dans ces explications

par exemple:
tester les post et get de php, quels types de traitement : lire et écrire dans un fichier txt ?

et le fichier Tools.php, l'include je le garde tel quel ?

merci pour vos lumières j'ai un niveau cp
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
351
Blog.....
Ce que F0xi te disais (et que je t'ai déjà indiqué dans d'autres discussions...) c'est que lorsque tu récupères dans une page Php des variables que tu as envoyé via la méthode POST ou la méthode GET (ce qui est le cas avec ton ajax par exemple) il est fortement conseillé de vérifier qu'elles sont bien initialisées.
C'est à ça que sert la fonction ISSET de php

Pour ce faire... soit tu utilises directement le ISSET dans ta page.. soit tu te crées une fonction qui contiendra cette vérification.
=> parce que c'est fastidieux, surtout si tu as plusieurs variables à vérifier.., de devoir écrire à chaque fois :
$maVariable = isset($_POST['toto'])?$_POST['toto']:'valeurpardéfaut';


F0xi à pris l'initiative de placer cette vérification dans une class (un type de fichier PHP contenant des fonctions ...notion que tu ne connais peut être pas encore [et dans ce cas .. oublie pour le moment] ).. ce qui permet de raccourcir le code à taper pour initialiser une variable :
$MaVariable = tools::PostParam("NomDeMaVariableEnvoyeeEnPost","ValeurParDefaut_SiJeveuxenmettreune")


*Là je te l'ai fait avec la méthode POST. mais c'est pareil avec le GET.

Bref.. Pense juste à initialiser tes variables php (avec la méthode qui te convient le mieux) avant des les utiliser...ça t'évitera des erreurs.
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

merci pour ton post il m'éclaire mieux
Messages postés
114
Date d'inscription
samedi 27 juillet 2013
Statut
Membre
Dernière intervention
7 mai 2014

Bonsoir,

il faut que je cogite tout ça pendant plusieurs jours car effectivement se pose la question de la réitération de plusieurs valeurs dans le même programme.

Include est une bonne idée et évidemment le Post et le Get,

merci toutes vos idées sont les bienvenues