我的表单验证几乎是可以正常工作的,但似乎无法解决最后一个问题。
我试图发回错误消息,并将它们放置在它们自己的div中,在它们的相关表单字段旁边。我在它自己的div中返回了一条错误消息,但是当我尝试发送多条消息时什么也没有发生。你们有什么想法吗?
这里是我的大部分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;
}
}
这是到目前为止的adduser.php页面:
<?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>";
}
?>
如你所见,我已经注释掉了fname信息,并且我的消息传递适用于lname。但是一旦我取消注释fname东西,再同时发送lname和fname消息,问题就又出现了。我不明白为什么......
任何意见都将不胜感激!
I don't entirely understand what you mean by "coming back in its own div" but you are aware that an element ID must be unique in the document? There doesn't happen to happen that you get two DIVs of the same ID if the error DIV comes back?
Try having only a single echo
statement at the very end of the script (so have a variable to concatenate all your error messages and only echo it at the very end).
Also, I would very strongly recommend using a JS library (like jQuery) for all your ajax needs - will make your life a whole lot easier
ok I've got it figured out and like always it was stupid why it wasn't working.
in my adduser.php page I just need to wrap the error message in a xml tag.
echo "<errors>";
//error content
echo "</errors>";