基于vue axios用户注册重复校验的问题(二)

上一篇基于vue axios用户注册重复校验的问题(一)中,通过async,await关键字解决异步请求返回值时间问题后,点击注册按钮提交表单信息会发现存在另一个问题,无论用户查重结果如何,都能通过注册,数据库表中出现重复信息

基于vue axios用户注册重复校验的问题(二)_第1张图片

立马反应到checkUsername()中的返回值并没有真正返回,代码如下

基于vue axios用户注册重复校验的问题(二)_第2张图片

基于vue axios用户注册重复校验的问题(二)_第3张图片

 

checkRegist()中先禁止表单提交,添加如下几行代码,把checkUsername()的返回值打印出来看看:

基于vue axios用户注册重复校验的问题(二)_第4张图片

 基于vue axios用户注册重复校验的问题(二)_第5张图片

输出结果是一个object promise对象

 

查阅资料后得知这个对象是js中异步操作的返回结果,是async关键字导致,在then回调函数中我们无法直接获得想要的返回值(true或false),现在的问题是同步请求无法正确返回值,异步请求也无法在合适的时机获取应有的值,那么如何做账户注册的校验?解决办法如下:

1)新增一个usernameFlag属性

基于vue axios用户注册重复校验的问题(二)_第6张图片

 2)回调函数中对其操作

基于vue axios用户注册重复校验的问题(二)_第7张图片

 3)通过外部属性值做判断

基于vue axios用户注册重复校验的问题(二)_第8张图片

完美解决问题

 

你可能感兴趣的:(java,javascript)