Valeur avec ajax et php

Résolu
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014 - 24 févr. 2014 à 00:44
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014 - 25 févr. 2014 à 01:25
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
24 févr. 2014 à 10:16
Bonjour,

Tu fais :
$_GET["donnees"];


Alors que tu as nommé ta variable (dans ton URL ) : ZoneCouleur1
0
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
24 févr. 2014 à 13:15
bonjour

tu envoie ou tu reçois des donné ?
0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 22:04
C'est un get donc j'envoie
0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 15:59
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
24 févr. 2014 à 16:51
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...



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 18:09
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ù ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
24 févr. 2014 à 18:40
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;






0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 19:15
Bonsoir,

Merci pour ta patience ça marche impeccable je récupère très bien ma valeur dans une boite d'alerte en ajax
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
24 févr. 2014 à 20:18
Donc ta question est résolue ???
N'oublies pas de clore le sujet....!!!
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
Modifié par f0xi le 24/02/2014 à 21:33
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');
?>
0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 22:53
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
Modifié par jordane45 le 25/02/2014 à 00:03
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.
0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
25 févr. 2014 à 01:25
merci pour ton post il m'éclaire mieux
0
blog-machine Messages postés 114 Date d'inscription samedi 27 juillet 2013 Statut Membre Dernière intervention 7 mai 2014
24 févr. 2014 à 22:02
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
0
Rejoignez-nous