Page 1 sur 1

Problème avec un return

Posté : 11 juin 2006, 22:08
par Tictac
Bonjour , j'ai un soucis pour lequel j'ai déjà chercher bcp et ne trouvant pas de solution , je me suis tout de même décidé à demander

j'ai une fonction qui appel une autre fonction .De cette fonction appelée , je voudrais récupérer une valeur via le return .

J'ai essayé de faire un return(alert(user_exist))! ca fonctionne mais quand je veux récupérer la valeur dans la fonction appelante , il me met "undefined" !

Voice code de la fonction appellante =>
var user_exist_return = makeRequest('user_login='+login+'&user_email='+email,'user_exist.php');
	if(user_exist_return == 1)
		{
		valid--;
		document.getElementById('login').className = "input_error";
		document.getElementById('login_error').innerHTML = " <img src=\"images/noacces.gif\" border=\"0\" align=\"absmiddle\"> Login d&eacute;j&agrave; utilis&eacute;";	
		}
Le code de la fonction makeRequest
function makeRequest(donnee,page) {
        var XhrObj = false;

		if(document.all) 
			{ 
				try {
               XhrObj = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    XhrObj = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
			}//fin if 
		else 
			{ 
				//Mozilla 
				var XhrObj = new XMLHttpRequest();
            if (XhrObj.overrideMimeType) {
                XhrObj.overrideMimeType('text/xml');
                // Voir la note ci-dessous à propos de cette ligne
            	}
			}//fin else 
      

        if (!XhrObj) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
		
		 XhrObj.onreadystatechange = function() 
			{ 
				if (XhrObj.readyState == 4) 
					{
					if(XhrObj.status == 200)
						{
						var xmldoc = XhrObj.responseXML;
						var root_node = xmldoc.getElementsByTagName('user').item(0);
						var user_exist = root_node.firstChild.data ;
						return(user_exist);
						}
					}	
			}     
	
 
		//Ouverture du fichier en methode GET 
		XhrObj.open("GET", page+"?"+donnee ,true); 
        XhrObj.send(null);
	
		
    }
Merci d'avance pour votre aide

Posté : 12 juin 2006, 10:11
par Tictac
AU SECOURS !!! :cry:

Posté : 12 juin 2006, 10:59
par Ryle
Sans aller plus loin dans le code :

Code : Tout sélectionner

return(alert(user_exist))
ceci retourne le résultat de la fonction alert() ... fonction qui ne retourne aucun résultat et se contente d'afficher dans une fenêtre d'alerte le message passé en argument... donc marchera pas :)

Il vaut mieux découper ainsi :

Code : Tout sélectionner

alert(user_exist); return user_exist;
Maintenant le "undefined" signifie que l'élément n'est pas défini.. il ne te reste donc qu'à tester un par un tes éléments pour savoir à partir d'où cela commence à clocher :

Code : Tout sélectionner

alert(root_node.firstChild.data); alert(root_node.firstChild); alert(root_node); alert(xmldoc.getElementsByTagName('user').item(0)); alert(xmldoc.getElementsByTagName('user').item); alert(xmldoc.getElementsByTagName('user')); ...
Vérifie également le code xml, etc.

Posté : 12 juin 2006, 11:16
par naholyr
Tu ne peux pas faire de return dans la fonction onReadyState d'un objet XMLHttpRequest, ça ne sert à rien.

Cette fonction va être exécutée en parallèle de ton code, et son résultat sera donc retourné dans le vent, nulle part tu n'auras de façon de récupérer. Il faut gérer des variables globales, ou l'encapsuler dans un objet.

Posté : 12 juin 2006, 12:17
par Ryle
Ah bah vi en fait...
bien vu naholyr :pouce:

Posté : 12 juin 2006, 12:43
par Tictac
Merci bcp naholyr

J'ai donc envoyé la valeur dans un hidden field et je la récupère ensuite

Merci , je viens d'apprendre qqch de très utile !!