用JS+ajax验证用户名,用户名被占用的情况下仍然可以正常提交,不返回FALSE,高手帮看一下.

wdmcsoft 2009-04-10 04:36:21
用JS+ajax验证用户名,用户名被占用的情况下仍然可以正常提交,不返回FALSE,高手帮看一下.



<script type="text/javascript">
//验证用户名
var request;
function createRequest() {
try {
request = new XMLHttpRequest();
}
catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");
}
<!--
function f_check_userID()
{
createRequest();
var userName2 = document.getElementById("a1").value;

//var url = "checkuser.php?random="+ Math.random() +"&username=" + theObj.value;
var url = "../net/regusercheck.asp?username=" +escape(userName2);
request.open("GET", url, true);
request.onreadystatechange = function (){
if (request.readyState == 4) {
if (request.status == 200) {


if(request.responseText == "1"){
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_err\" style=\"display:inline\"> <font color=\"FF0000\">此用户已被他人注册!</font></div>";
return false;
}
else if(request.responseText == "0"){
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_right1\" style=\"display:inline\"> <font color=\"FF0000\">此用户名可用</font></div>";
return true;
}


else{
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_right1\" style=\"display:inline\"> <font color=\"FF0000\">您的用户名不符,必须为6-12位字母、数字、下划组的组合;</font></div>";
return false;
}
}

}
else{
document.getElementById('V1').innerHTML = "<font color='#AAAAAA'>正在处理,请稍候......</font>";
return false;
}
}
request.send(null);
}


</script>

...全文
370 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyi0608 2011-09-09
  • 打赏
  • 举报
回复
我怎么下载不下来啊???
wdmcsoft 2009-04-11
  • 打赏
  • 举报
回复
韩兄,我搞好了!!多谢韩兄!!

分全给韩兄了!!
什么都不能 2009-04-11
  • 打赏
  • 举报
回复
wdmcsoft 2009-04-11
  • 打赏
  • 举报
回复
刚才的验证用户名解决了,如何传两个值过去呢?

var userName2 = document.getElementById("a1").value;
var lei=document.getElementById("lx1").value;
if(lei==1){
var url = "net/regusercheck.asp?username="+escape(userName2)+"leixing="+lei;
}
else if(lei==2){
var url = "net/regusercheck.asp?username="+escape(userName2)+"leixing="+lei;
}

这样写对吗?
wdmcsoft 2009-04-11
  • 打赏
  • 举报
回复
var userName2 = document.getElementById("a1").value;
var lei=document.getElementById("lx1").value;
if(lei==1){
var url = "net/regusercheck.asp?username="+escape(userName2)+"leixing="+lei;
}
else if(lei==2){
var url = "net/regusercheck.asp?username="+escape(userName2)+"leixing="+lei;
}
wdmcsoft 2009-04-11
  • 打赏
  • 举报
回复
楼上,我该怎么调用呢?你没有下载看一下源码吗?
什么都不能 2009-04-11
  • 打赏
  • 举报
回复
<script type="text/javascript">
var isValidUser = 0;
//验证用户名
var request;
function createRequest() {
try {
request = new XMLHttpRequest();
}
catch (trymicrosoft) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (othermicrosoft) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed) {
request = false;
}
}
}
if (!request)
alert("Error initializing XMLHttpRequest!");
}
<!--
function f_check_userID()
{
createRequest();
var userName2 = document.getElementById("a1").value;

//var url = "checkuser.php?random="+ Math.random() +"&username=" + theObj.value;
var url = "../net/regusercheck.asp?username=" +escape(userName2);
request.open("GET", url, true);
request.onreadystatechange = function (){
if (request.readyState == 4) {
if (request.status == 200) {


if(request.responseText == "1"){
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_err\" style=\"display:inline\"> <font color=\"FF0000\">此用户已被他人注册!</font></div>";
isValidUser = 2;
//return false; 没有用的代码
}
else if(request.responseText == "0"){
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_right1\" style=\"display:inline\"> <font color=\"FF0000\">此用户名可用</font></div>";
isValidUser = 1;
//return true; 没有用的代码
}


else{
document.getElementById('V1').innerHTML = "<div id=\"e1\" class=\"uname_right1\" style=\"display:inline\"> <font color=\"FF0000\">您的用户名不符,必须为6-12位字母、数字、下划组的组合;</font></div>";
isValidUser = 2;
//return false; 没有用的代码
}
}

}
else{
document.getElementById('V1').innerHTML = "<font color='#AAAAAA'>正在处理,请稍候......</font>";
isValidUser = 2;
//return false;
}
}
request.send(null);
}

//简单验证表单
function check(){
if(isValidUser == 0){
document.getElementById('V1').innerHTML ="请检测用户名";
return false;
}else if(isValid == 2){
return false;
}
....
}
</script>
wdmcsoft 2009-04-11
  • 打赏
  • 举报
回复
我把全部源码发到网上,高手下载后看一下.ASP的

http://www.rc0359.com/reg.rar
jinxfei 2009-04-10
  • 打赏
  • 举报
回复
“提交”按钮不能是一个submit按钮,必须是一个普通按钮,onclick事件里做ajax验证,在ajax验证通过的时候,
也就是在:
else if(request.responseText == "0"){

通过js代码提交表单。
  • 打赏
  • 举报
回复
html和后台处理文件代码
wdmcsoft 2009-04-10
  • 打赏
  • 举报
回复
没有人搞嘛?
街头小贩 2009-04-10
  • 打赏
  • 举报
回复
你在提交之前的验证加上ajax返回的结果即可
if(ajax返回true && 表单验证){
表单提交
}
wdmcsoft 2009-04-10
  • 打赏
  • 举报
回复

在onblur 原来就放有.

<input name="a1" type="text" id="a1" onfocus="f_check_zh2(1,12,'V1',this.value,'请您输入用户名,必须由6-12位的数字、字母、下划线的组合。')" onblur="f_check_userID()" maxlength="12" />
shangxb 2009-04-10
  • 打赏
  • 举报
回复
一般是当焦点离开用户名文本框时 发送ajax请求 来判断用户名是否可用
你可以将这段代码放到onblur()中
wdmcsoft 2009-04-10
  • 打赏
  • 举报
回复
该怎么解决呢?
mumu_java 2009-04-10
  • 打赏
  • 举报
回复
错误原因是因为ajax是异步请求,提交的时候虽然调用了f_check_userID()函数,但是不会等到它返回值后再决定是否提交,而是发了ajax请求后直接就提交了。

52,782

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧