Ajax无法给函数返回值

我给你介绍个对象吧! 2019-03-22 04:13:21
function checkUserName(){

var username = document.getElementById('username');
var errname = document.getElementById('nameErr');
var pattern = /^\w{3,}$/;
if(username.value.length == 0){
errname.innerHTML="用户名不能为空";
errname.className="error";
return false;
}
if(!pattern.test(username.value)){
errname.innerHTML="用户名不符合规范";
errname.className="error"
return false;
}

var xmlhttp;
var result;
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
if(xmlhttp.responseText == 11111){
errname.innerHTML="恭喜,用户名可用";
errname.className="success";
return true;
}else if(xmlhttp.responseText == 22222){
errname.innerHTML="用户名已存在";
errname.className="error";
return false;
}
}
}

xmlhttp.open("GET","/index/index/select?name="+username.value ,true);
xmlhttp.send();

}
这是我写的用来验证用户名是否为空、是否符合要求、是否在数据库中已经存在这个用户的一个方法,但是最下面用ajax返回true或者false时返回的checkUserName竟然是undefined,求解,这个问题应该怎么解决啊
...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
骑着小黑马 2019-03-23
  • 打赏
  • 举报
回复
换成异步请求试试看!!
  • 打赏
  • 举报
回复
引用 3 楼 骑着黑马来娶你 的回复:
换成异步请求试试看!!
换成异步的会出现一个警告,如下 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. checkUserName @ login:143 onblur @ login:228 但是还是实现不了checkUserName()为true。我是想要checkUserName() checkPassword()等等所有的函数返回都为true然后点击注册才能提交到后台
xiao_lone 2019-03-22
  • 打赏
  • 举报
回复
你的请求是同步的吗,异步不会等待返回值
  • 打赏
  • 举报
回复
学习web中的小白,啥也不懂,希望大神帮忙指点迷津啊

87,904

社区成员

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

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