【问题标题】:Ajax Form Validation ProblemAjax 表单验证问题
【发布时间】:2010-01-27 17:42:18
【问题描述】:

我的表单验证几乎可以工作,但我似乎无法解决最后一个问题。

我正在尝试发回错误消息并将它们放置在他们自己的 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 发送消息,我没有任何反应'不明白为什么。

任何见解都会有很大帮助!谢谢。

【问题讨论】:

标签: javascript ajax validation forms


【解决方案1】:

我不完全理解您所说的“返回自己的 div”是什么意思,但您知道元素 ID 在文档中必须是唯一的吗?如果错误 DIV 再次出现,您会不会得到两个具有相同 ID 的 DIV?

【讨论】:

    【解决方案2】:

    尝试在脚本的最后只使用一个 echo 语句(因此有一个变量来连接所有错误消息,并且只在最后回显它)。

    另外,我强烈建议您使用 JS 库(如 jQuery)来满足您的所有 ajax 需求 - 会让您的生活变得更轻松

    【讨论】:

      【解决方案3】:

      好的,我已经弄清楚了,而且像往常一样,为什么它不起作用是愚蠢的。

      在我的 adduser.php 页面中,我只需要将错误消息包装在 xml 标记中。

      echo "<errors>";
      
      //error content
      
      echo "</errors>";
      

      【讨论】:

        猜你喜欢
        • 2019-09-30
        • 1970-01-01
        • 2022-01-19
        • 2023-03-04
        • 2015-04-23
        • 1970-01-01
        • 1970-01-01
        • 2011-12-05
        • 2014-08-16
        相关资源
        最近更新 更多