如何通过php中的ajax设置标志或指示器?

时间:2010-08-10 10:46:38

标签: php ajax

我正在创建一个join now页面。我正在使用登录名,密码,确认密码和电子邮件进行注册。这些输入我通过javascript验证,我正在检查login name是否已经存在或者没有通过ajax.If它存在我只是显示一个this id exists already please chose another one.的消息 问题:是,如果用户输入已存在的登录ID,则ajax将显示已存在,但仍然可以单击提交,因为这次JavaScript将通过它,因为登录ID字段不为空。甚至我可以在服务器端数据库进程上检查这个,但是I want to set one indicator or flag kind of, until and unless user enters such login id that does not exist he wont be able to submit form.我的ajax代码 -

...  
xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
            document.getElementById("loginName").innerHTML=xmlhttp.responseText;
            }
          }
...

db file -

//check in user table  
if($num_rows == 0)
{
    echo "<font color='Green'>Ok, you can chose <b>$logid</b> as Login name.</font>";
}
elseif($num_rows >= 1)
{
echo "<font color='Red'><b>$logid</b> Ligin name has already been taken, Please chose another Login name.</font>";
}

或者如何将登录ID文本框设置为空字符串以及来自ajax的错误消息?类似于

elseif($num_rows >= 1)
{
?>
    <script>
        document.getElementById("newid").value="";
    </script>
<?php
echo "<font color='Red'><b>$logid</b> Ligin name has already been taken, Please  chose another Login name.</font>";
}

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:将表单设置为禁用,然后在选择可用的登录信息时启用它:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
    document.getElementById("loginName").innerHTML=xmlhttp.responseText;
    document.getElementById('id-of-form').disabled = false;
}

我个人不会太担心,因为无论如何你必须在表单提交上重新检查它,因为如果a)他们关闭了JS或b)选择与其他人即将加入的相同的登录名同样的瞬间(竞争条件),你需要确保它们都不会成功。检查登录名是一种可用性功能,可帮助人们不讨厌您和您的网站,让他们重新提交表单几十次,以便找到一个好的登录。

答案 1 :(得分:0)

我认为应该这样做 创建一个这样的表单

<form name="name1" method="post" action="url" onsubmit="return checkForm(this)">
    <!-- your fields here -->
    <!-- add an hidden field -->
    <input type="hidden" id="hidden1" name="hiddenf" value="0" />
</form>
<script>
function checkForm(form)
{
   return form.hiddenf.value;
}
</script>

然后在ajax回调函数中

...  
          xmlhttp.onreadystatechange=function()
          {
             if (xmlhttp.readyState==4 && xmlhttp.status==200)
             {
                 document.getElementById("loginName").innerHTML=xmlhttp.responseText;
                 if(xmlhttp.responseText == 'not found') //your exist-id-message here
                    document.getElementById('hidden1').value = 0;
                 else
                    document.getElementById('hidden1').value = 1;
          }
...