Problème avec un return

Eléphant du PHP | 353 Messages

11 juin 2006, 22:08

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
Modifié en dernier par Tictac le 12 juin 2006, 12:43, modifié 1 fois.

Eléphant du PHP | 353 Messages

12 juin 2006, 10:11

AU SECOURS !!! :cry:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juin 2006, 10:59

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.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

12 juin 2006, 11:16

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juin 2006, 12:17

Ah bah vi en fait...
bien vu naholyr :pouce:

Eléphant du PHP | 353 Messages

12 juin 2006, 12:43

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 !!