Partage
  • Partager sur Facebook
  • Partager sur Twitter

recuperation de la variable retournée par une fonction

Sujet résolu
    21 octobre 2008 à 21:51:09

    Bonjour, voilà mon problème :

    j'ai une fonction envoi_form qui envoie les données d'un formulaire à une page php, et qui reçoit les codes d'erreur sous forme d'une chaine de caractères du type : 101,102,201...
    Le but est que la fonction envoi_form retourne cette chaine de caractères.

    De plus, j'ai une fonction valider_form, qui doit se charger de la validation d'un formulaire : elle appelle la fonction envoi_form, recupere les codes d'erreur, fait la correspondance avec les messages d'erreurs correspondants, et les affiche.

    Le problème est que je n'arrive pas à recuperer les codes d'erreurs dans ma deuxième fonction.

    Voici les fonctions en question :
    function envoi_form(form,lien)
    
    	{
    
    	var xhr = getXMLHttpRequest();
    
    	if(xhr && xhr.readyState != 0)
    
    		{
    
    		xhr.abort(); //si une requete etait déjà en cours, elle est annulée
    
    		}
    
    	xhr.onreadystatechange = function() 
    
    		{
    
    		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
    
    			{
    			reponse = xhr.responseText;
    
    			document.getElementById('erreurs').innerHTML = "";
    
    			alert(reponse + '(fonction)'); //on voit que la variable reponse contient ce qu'il faut
    			return reponse;
    
    			} 
    		else if(xhr.readyState == 2 || xhr.readyState == 3) 
    
    			{
    
    			document.getElementById('erreurs').innerHTML = "<p>Envoi en cours</p>";
    
    			}
    
    		}
    
    	
    
    	formulaire = document.getElementById(form);
    
    	parametres = '';
    
    	for(i=0;i<formulaire.length;i++)
    
    		{
    
    		valeur = encodeURIComponent(formulaire.elements[i].value); //encodage du parametre
    
    		if(i>0)
    
    			{
    
    			parametres += '&';
    
    			}
    
    		parametres += formulaire.elements[i].name + '=' + valeur; //ajout du parametre à la liste des parametres déj enregistrés
    
    		}
    
    	//alert(parametres);
    
    	xhr.open("POST", lien, true);
    
    	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    
    	xhr.send(parametres); //envoi des parametres
    
    	}
    


    function valider_form(form,lien)
    
    	{
    	//alert(envoi_form(form,lien));
    
    	var reponse_erreurs = envoi_form(form,lien); 
    	alert(reponse_erreurs);//la variable reponse erreurs ne contient rien
    
    	//on traite ensuite les codes d'erreur
    . 
    //Cette partie n'est pas encore faite, car je n'arrive pas à recuperer les codes d'erreurs
    	}
    


    Cela fait maintenant un moment que j'essaie de retourner ce code dans tous les sens, en mettant des alert() un peu de partout, et je ne trouve pas mon erreur. Si quelqu'un a une idée, il me serait d'un grand secours.
    • Partager sur Facebook
    • Partager sur Twitter
      22 octobre 2008 à 15:10:04

      Tu ne renvoi aucun code d'erreur en même temps... :D
      Fais attention :
      lors de l'appel tu crée un objet XHR, mais la fonction onreadystatechange est appelé en dehors de cette appel. (Une fois que l'état change, un peu comme un événement).
      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2008 à 21:12:11

        mais le return est situé à l'interieur d'une condition, donc il doit s'executer seulement lorsque les codes d'erreur ont été générés, non ? enfin je peux me tromper.
        • Partager sur Facebook
        • Partager sur Twitter

        recuperation de la variable retournée par une fonction

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown