11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, je voudrais savoir comment on peut faire pour retourner une variable en ajax avec jquery.

Ce que je souhaite c'est pré-remplir un formulaire par les données récupérer en sql dans ma base.
Mais apparemment la variable data renvoyé par .post ne peut renvoyer que du texte.
Du coup j'ai essayer de faire
echo 'var test= "ok";'
dans ma page de traitement pour ensuite faire un
 eval(data); 
suivi d'un
alert('test'); 
mais là il firebug me dit que la variable n'existe pas.

Si quelqu'un à une idée pour faire retourner des variables.

Merci d'avance
Modifié par WyLLoU (25 Mar 2010 - 12:41)
pour commencer, poste le code que tu utilises pour faire ta requête ajax.

Ensuite, avec jQuery tu peux spécifier le type de retour attendu, si celui-ci n'est pas correct, alors il te renverra NULL.

Veille donc à spécifier correctement le type de retour, et à le traiter en conséquence.

Par ailleurs, je te conseille d'utilisation JSON ou XML qui te permettront de traiter plus facilement tes données avec Javascript
Ok, faudrait que je me tienne au courant en xml alors Smiley smile

Voilà le code jquery pour la requête ajax.
$.post("traitement.php",
				{action:'presaisi', id:$(this).attr('id')},
					function(data){

 						eval(data);
						
					});



Et dans ma page traitement.php, je fais un

echo '			
$("#f_titre").val("'.$f_titre.'");
$("#f_probleme").val("'.$f_probleme.'");
$("#f_feedback").val("'.$f_feedback.'");';

etc pour remplir mon formulaire grâce au eval.

Mon problème, c'est que lorsque je récupère mes données sql, et que cette donnée est du texte avec une retour à la ligne, et bien ça me met une erreur caractère, car mon retour à la ligne dans phpmyadmin n'est spécifié par rien d'autre qu'un retour à la ligne comme sur word.

Donc je voudrais récupérer des variables et faire mon remplissage au retour de ma requête ajax.
Modifié par WyLLoU (24 Mar 2010 - 09:25)
Tout d'abord évite l'utilisation de 'eval()' d'une manière générale, ce n'est pas une bonne idée.

Ensuite, je te conseille de convertir tes données en JSON pour les utiliser avec JS (ou XML, question de goût je suppose)

Pour découvrir JSON tu peux aller sur le site officiel (en anglais)

En php :


$result = array(
    'titre' => 'Un titre',
    'probleme' => 'Un problème', 
    'feedback' => 'Un feedback',
);

echo json_encode($result);


ensuite en JS :



var params = {
'action' : 'presaisi',
'id' : $(elem).attr('id')
};

$.post("traitement.php", params,
   function(data){
      $("#f_titre").val(data['titre']); 
      $("#f_probleme").val(data['probleme']); 
      $("#f_feedback").val(data['feedback']);
   }, "json");


Aussi par rapport à ce que je vois dans ton code, je te conseille d'externaliser ton javascript, il sera plus facile pour développer et déboguer ensuite.