1、问题场景
在开发项目时遇到了vue异步请求的问题,场景如下:
这里需要身份证号在输入时同步验证身份证号对应的角色是否在另一张表中存在,使用到了vue的dataRule自定义validator验证,在这块使用自带的异步发送ajax死活拿不到验证的值。
于是我查阅了相关资料,vue的异步发送请求在某些场景确实是不好用的,于是自己编写了同步发送请求的方法。
2、解决方法
(1)关闭异步请求
import Vue from 'vue'
Vue.prototype.ajax = function(url, type, data, fun) {
let token = Vue.cookie.get('token')
$.ajax({
url: url,
type: type,
dataType: 'json',
contentType: "application/json",
async: false,
headers: {
"token": token
},
data: JSON.stringify(data),
success: function(resp) {
fun(resp)
},
error: function(e) {
console.log(e)
}
})
}
(2)调用
在需要调用关闭异步请求的文件中进行调用
import Vue from 'vue';
this.ajax(
你的url,
'post',
{'参数名': '参数值'},
function(resp){
if(resp.exist>0){
return callback()
}else{
callback(new Error("该学生不存在!"))
}
}
)
这样就成功解决异步请求无法及时获取参数的问题了!