我的表单验证几乎正常,但我似乎无法解决最后一个问题。
我正在尝试发回错误消息,并将它们放在相关表单字段旁边的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发送消息,我就不会发生任何事情明白为什么。
任何见解都将是一个很大的帮助!感谢。
答案 0 :(得分:0)
我并不完全理解“回到自己的div中”的含义,但是您知道元素ID在文档中必须是唯一的吗?如果错误DIV返回,你不会发生两个具有相同ID的DIV吗?
答案 1 :(得分:0)
尝试在脚本的最后只有一个echo
语句(因此有一个变量可以连接所有错误消息,并且只在最后回显它)。
此外,我强烈建议您使用JS库(如jQuery)来满足您的所有ajax需求 - 这将使您的生活变得更加轻松
答案 2 :(得分:0)
好吧我已经弄明白了,并且总是觉得它不起作用是愚蠢的。
echo "<errors>";
//error content
echo "</errors>";