php AJAX验证表单的一点问题
小弟在做用户注册的时候出了点问题,问题描述:当用户输入注册用户名时,利用AJAX,在动态页面检查该用户名是否存在,一般情况下,这种用户注册验证分为两步,第一步利用JS检查...
小弟在做用户注册的时候出了点问题,
问题描述:当用户输入注册用户名时,利用AJAX,在动态页面检查该用户名是否存在,一般情况下,这种用户注册验证分为两步,第一步利用JS检查用户名是否为空,若满足JS的判断要求,第二步在提交数据的时候,检查是不是符合用户名是否存在这个要求(利用AJAX+PHP的返回值判断);
代码如下:
<form id="myform" action="do.php" method="POST">
用户名:<input type="text" id="username" onchange="checkname()/> //checkname()的代码在下面,主要是利用AJAX+PHP检测用户是否已经存在
<input type="submit" onclick="return checkform()" value="提交" />
//checkform()主要是最后提交的时候检测整个表单是否符合要求,然后再决页面是否跳转到do.php中去;
</form>
//function checkname()代码是:
function checkname()
{
var http_Ajax=createAjax(); //具体的创建HTTPREQUESTHTml对象我就不贴出了绝对没问题;
var username=document.getElementById('username').value;
var url="../register/checkName.php? username="+username; //检测用户是否存在的页面,如果不存在返回1;
url=encodeURI(url); //编码。确保中文可以输入
url=encodeURI(url); //编码
http_Ajax.open("GET",url,true);
http_Ajax.send(null);
http_Ajax.onreadystatechange=function()
{
if(http_Ajax.readyState==4)
{
var
text=http_Ajax.responseText;
if(text==1) //可以注册
{
return true;
}
else //不可以注册
{
return false;
}
}
}
}
}
//最后的checkform()代码是:
checkform()
{
if(document.myform.username.value == "")
{
alert("用户名输入有误");
document.myform.username.focus();
return false;
if(!checkname()) //checkname()返回true 表示可以注册
{
return false;
}
return true; //最后如果都满足。则执行do.php
}
请大家帮我看看,问题出在哪了,即使用户名已经存在了,他也执行了do.php并不是停留在表单的页面
谢谢一楼的回答,是我的疏忽,其实是有输入用户名的;只不过在AJXA那里,少了一句话,就是如果可以注册即返回1,那么document.getElementById('notice').innerHTML="恭喜可以注册"; (在表单中也会加入一个span标签ID为:nocice) 展开
问题描述:当用户输入注册用户名时,利用AJAX,在动态页面检查该用户名是否存在,一般情况下,这种用户注册验证分为两步,第一步利用JS检查用户名是否为空,若满足JS的判断要求,第二步在提交数据的时候,检查是不是符合用户名是否存在这个要求(利用AJAX+PHP的返回值判断);
代码如下:
<form id="myform" action="do.php" method="POST">
用户名:<input type="text" id="username" onchange="checkname()/> //checkname()的代码在下面,主要是利用AJAX+PHP检测用户是否已经存在
<input type="submit" onclick="return checkform()" value="提交" />
//checkform()主要是最后提交的时候检测整个表单是否符合要求,然后再决页面是否跳转到do.php中去;
</form>
//function checkname()代码是:
function checkname()
{
var http_Ajax=createAjax(); //具体的创建HTTPREQUESTHTml对象我就不贴出了绝对没问题;
var username=document.getElementById('username').value;
var url="../register/checkName.php? username="+username; //检测用户是否存在的页面,如果不存在返回1;
url=encodeURI(url); //编码。确保中文可以输入
url=encodeURI(url); //编码
http_Ajax.open("GET",url,true);
http_Ajax.send(null);
http_Ajax.onreadystatechange=function()
{
if(http_Ajax.readyState==4)
{
var
text=http_Ajax.responseText;
if(text==1) //可以注册
{
return true;
}
else //不可以注册
{
return false;
}
}
}
}
}
//最后的checkform()代码是:
checkform()
{
if(document.myform.username.value == "")
{
alert("用户名输入有误");
document.myform.username.focus();
return false;
if(!checkname()) //checkname()返回true 表示可以注册
{
return false;
}
return true; //最后如果都满足。则执行do.php
}
请大家帮我看看,问题出在哪了,即使用户名已经存在了,他也执行了do.php并不是停留在表单的页面
谢谢一楼的回答,是我的疏忽,其实是有输入用户名的;只不过在AJXA那里,少了一句话,就是如果可以注册即返回1,那么document.getElementById('notice').innerHTML="恭喜可以注册"; (在表单中也会加入一个span标签ID为:nocice) 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询