Problème AJAX en get, retour bon pourtant

Fermé
wallynou - Modifié par wallynou le 8/08/2010 à 13:38
 wallynou - 8 août 2010 à 13:41
Bonjour tous le monde,

Voilà j'ai un petit souci, je travail sur un site multilangue, évidament avec JS je ne connais pas de méthode pour traduire automatiquement un message d'erreur.

j'ai donc créer un fichier PHP contenant différente constante, ce fichier est charger en fonction de la langue de l'utilisateur, jusque là pas de souci

maintenant mon problème est lorsque je veux écrire le résultat dans un DIV ( qui existe hein ) et là stupéfait mon retour de AJAX me renvoi bien la valeur à ecrire mais quand je fait le innerHTML il met undefined à la place du message d'erreur

Très de bavardage voici un résumé de mes source

Fichier constante_fr.php
define('JS_ERR1',"Erreur n°1"); 
define('JS_ERR2',"Erreur n°2"); 
define('JS_ERR3',"Erreur n°3"); 

Fichier fonction qui affiche la valeur de la constante
function returnConst($cst){ 
    $csts = get_defined_constants(); 
    return (array_key_exists($cst,$csts)) ? $csts[$cst] : 'Erreur interne'; 
} 
// PETIT TEST 
// echo returnConst('JS_ERR1'); 
// TEST => OK 

Jusque là pas de souci ca fonctionne, ensuite voici le JS

Fichier xhr.js
/* Création d'un objet XMLHttpRequest comptible IE,FF et lambda */ 
function Xhr(){ 
  if(window.XMLHttpRequest){ return new XMLHttpRequest(); } 
  else if(window.ActiveXObject){ return new ActiveXObject("Microsoft.XMLHTTP"); } 
  else{ alert('Vous devez activer Javascript dans les options de votre navigateur'); } 
} 
// Va chercher l'erreur dans la bonne langue 
function errXhr(cst,cbl){ 
    var obj = (cbl.style) ? cbl : document.getElementById(cbl); 
    var ajx = Xhr(); 
    var file = "returnConst.php?cst="+cst; 
    ajx.open("GET", file, false); 
    ajx.send(null); 
    var ret = ajx.responseText; 
    alert(ret); // M'affiche bien le message d'erreur voulue 
    obj.innerHTML = ret; // Ici devient udefined 
} 


Source HTML
 
<html> 
    <head> 
    <title>Test</title> 
    <script type="text/javascript" src="xhr.js"></script> 
    </head> 
    <body> 
    <div id="confirm"></div> 
    <input type="button" value="test 1" onclick="errXhr('JS_ERR1','confirm');" /> 
    </body> 
</html> 


J'ai omis pas mal de source PHP ( vérification de variable etc...) puisque quand je fait l'alert j'ai bien le message d'erreur, donc PHP n'est pas en cause. c'est vraiment au moment d'ecrire le résultat, au lieu d'ecrire le message d'erreur donc la variable js "ret" dans le DIV confirm, il y ecris undefined

donc je ne comprend pas que reponseText m'affiche bien "Erreur N°1" dans l'alert lancé, mais ecris undefined dans le div de confirmation

Je sais pas si je suis très clair, mais n'hésitez pas à demander si besoin, je tacherai de répondre

d'avance merci de votre aide
A voir également:

1 réponse

j'ai aussi installer firebug qui n'affiche pas d'erreur et qui me retourne aussi le bon message dans l'onglet retour de la console
0