0 votes

Problème de validation de formulaire Ajax

La validation de mon formulaire fonctionne presque parfaitement, mais je n'arrive pas à résoudre ce dernier problème.

J'essaie de renvoyer des messages d'erreur et de les placer dans leur propre division à côté des champs de formulaire correspondants.

J'ai un message d'erreur qui revient dans sa propre division, mais lorsque j'essaie de renvoyer plusieurs messages, rien ne se passe.

Voici l'essentiel de mon ajax

function regForm(thisform) { //Reg user form check
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null) {
 alert ("Browser does not support HTTP Request");
 return;
 }
 var formdata = "";
 formdata = "lname=" + thisform.elements['lname'].value + "&fname=" + thisform.elements['fname'].value + "&email=" + thisform.elements['email'].value + "&username=" + thisform.elements['username'].value + "&pass=" + thisform.elements['pass'].value + "&pass2=" + thisform.elements['pass2'].value; //send the data through the url - frist is the name i want to call it... second grad the content from the form using its id
    xmlHttp.onreadystatechange=formSubmitted;
    xmlHttp.open("POST", "adduser.php",true);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.setRequestHeader("Content-length", formdata.length);
    xmlHttp.setRequestHeader("Connection", "close");
    xmlHttp.send(formdata);
    return false;
}

function formSubmitted() {
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 
    xmlDoc=xmlHttp.responseXML;
//document.getElementById("feedback").innerHTML = xmlHttp.responseText;
document.getElementById("feedback1").innerHTML= xmlDoc.getElementsByTagName("lname")[0].childNodes[0].nodeValue;
document.getElementById("feedback2").innerHTML= xmlDoc.getElementsByTagName("fname")[0].childNodes[0].nodeValue;

    }
}

et voici ma page simple adduser.php jusqu'à présent

<?php
header('Content-Type: text/xml');

$lname = mysql_real_escape_string($_POST['lname']);
$fname = mysql_real_escape_string($_POST['fname']);

if($lname == NULL) {
echo "<lname>NEED TO FILL</lname>";
}

//if($fname == NULL) {
//echo "<fname>NEED TO FILL</fname>";
//}
else {
    echo "<lname> </lname>";
    //echo "<fname> </fname>";
}
?>

Comme vous pouvez le voir, j'ai commenté les informations relatives au nom de famille et ma messagerie fonctionne pour le nom de famille, mais dès que je décommente les informations relatives au nom de famille dans l'espoir d'envoyer un message à la fois pour le nom de famille et le nom de famille, rien ne se passe.

Tout commentaire serait d'une grande aide ! Merci.

0voto

Pekka 웃 Points 249607

Je ne comprends pas tout à fait ce que vous voulez dire par "revenir dans sa propre div" mais vous êtes conscient qu'un élément ID doit être unique dans le document ? Il n'arrive pas que vous obteniez deux DIVs de la même ID si le DIV d'erreur revient ?

0voto

Marek Karbarz Points 14870

Essayez de n'avoir qu'un seul echo à la toute fin du script (ayez donc une variable pour concaténer tous vos messages d'erreur et ne la répercutez qu'à la toute fin).

Par ailleurs, je vous recommande vivement d'utiliser une bibliothèque JS (comme jQuery) pour tous vos besoins en matière d'ajax - cela vous facilitera grandement la vie.

0voto

Adam Points 764

Ok j'ai compris et comme toujours c'était stupide de savoir pourquoi ça ne marchait pas.

dans ma page adduser.php, j'ai juste besoin d'envelopper le message d'erreur dans une balise xml.

echo "<errors>";

//error content

echo "</errors>";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X