ajax不能给全局变量赋值

shenhaibb_ 2020-04-07 08:06:14
var arr=new Array(0,0);
//验证用户名
$("#usernameId").blur(function () {

if($("#usernameId").val().length!=0) {//用户名不为空
//检验数据库中是否已经存在一个同名的用户名
//用户输入的用户名
var username_client=$("#usernameId").val();
//查询这个用户名在数据库中是否存在
$.ajax({
async:false,
url:"/user/findByName",
data:{"username_client":username_client},
type:"post",
scriptCharset: "utf-8",
dataType:'json',
success:function (data) {
if(data.info=="true"){
//数据库不存在一个同名的用户名,即这个用户名可以使用
arr[0]=1;
trueUsername.style.display = 'block';
usernameId.className='form-control form-control-sm is-valid';
}else{
//数据库存在一个同名的用户名,即这个用户名不能使用
falseUsernameExist.style.display='block';
falseUsername.style.display = 'none';
checkCodeId.className='form-control form-control-sm is-invalid';
}
},
error:function (data) {//出现异常
alert("出现异常");
}
});
}else{//用户名为空
falseUsername.style.display = 'block';
usernameId.className='form-control form-control-sm is-invalid';
}
});
$("#usernameId").click(function () {
trueUsername.style.display='none';
falseUsernameExist.style.display='none';
falseUsername.style.display='none';
usernameId.className='form-control form-control-sm';
});
console.log(arr[0])
alert(arr[0]);


我输入了符合规则的用户名 弹不出1,arr[0]一直是0 我这不是异步的啊 为啥去不到啊
...全文
176 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
征途黯然. 2020-04-08
  • 打赏
  • 举报
回复
两种解决方法: 1、把你需要的操作,写在success回调函数里面 2、或者把ajax的async属性设置为false,这样ajax就是同步的了,会顺序执行,操作可以写在success回调函数外面
shenhaibb_ 2020-04-07
  • 打赏
  • 举报
回复
引用 4 楼 nian_cj 的回复:
因为你这个函数一开始就已经执行了,你的那个ajax函数是异步的,等你这个接口调用成功,后你的那个判断方法不会早就已经执行过了。所以你应该在你的success函数里面 再去执行一遍你的那个判断按钮是否能点的逻辑
感谢大佬!!
_念_ 2020-04-07
  • 打赏
  • 举报
回复
因为你这个函数一开始就已经执行了,你的那个ajax函数是异步的,等你这个接口调用成功,后你的那个判断方法不会早就已经执行过了。所以你应该在你的success函数里面 再去执行一遍你的那个判断按钮是否能点的逻辑
shenhaibb_ 2020-04-07
  • 打赏
  • 举报
回复
引用 2 楼 shenhaibb_ 的回复:
[quote=引用 1 楼 nian_cj 的回复:]
你的接口他要等你后端返回数据了才会执行success的回调,但是你的console不会等他

您好,就是我在这个函数的结尾添加了一个判断的函数
var flag=true;
for(var i=0;i<arr.length;i++) {
if (arr[i] == "0") {
flag = false;
break;
}
}

if(flag) {
$("#registerId").attr("disabled", false);
}

我想达到的效果是验证通过了才让点击注册按钮,但是当我填入符合清空的值的时候,我的arr[i]都是0 [/quote]
符合情况的值
就是我无法到达这个函数 为啥啊
shenhaibb_ 2020-04-07
  • 打赏
  • 举报
回复
引用 1 楼 nian_cj 的回复:
你的接口他要等你后端返回数据了才会执行success的回调,但是你的console不会等他

您好,就是我在这个函数的结尾添加了一个判断的函数
var flag=true;
for(var i=0;i<arr.length;i++) {
if (arr[i] == "0") {
flag = false;
break;
}
}

if(flag) {
$("#registerId").attr("disabled", false);
}

我想达到的效果是验证通过了才让点击注册按钮,但是当我填入符合清空的值的时候,我的arr[i]都是0
_念_ 2020-04-07
  • 打赏
  • 举报
回复
你的接口他要等你后端返回数据了才会执行success的回调,但是你的console不会等他

52,797

社区成员

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

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