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 à récuperer 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.