今天做了一个身份验证的程序,函数内部用到了ajax异步请求,简单代码如下:
// 检测该身份证是否能被该用户使用 function identityCheck(id_number) { // ajax请求数据 var result = false; $.post('/identityCheck', { &nbs p; 'id_number': id_number, }, function(response) { &n bsp; // 判断逻辑 if (response.code == '0') { &nb sp; result = true; } else { &nb sp; result = false; } }); & nbsp; // 返回 return result; }
结果在外部请求,不管传进去的id_number是什么,永远打印的是false。
这可就奇了怪了~
这个问题困扰了我好久,后来才想到是不是异步请求的问题,结果一测试,果不其然,根本就没赋值就被直接输出了。
同时这也是异步的特点 ,也就是说还没来得急赋值,就已经返回这个变量了.
解决方法很简单,只要把请求设置成同步,就可以获取这个变量的值了
在前面加上一行代码,完整代码如下:
// 检测该身份证是否能被该用户使用 function identityCheck(id_number) { // ajax请求数据 var result = false; // 新增代码 // 请求设置为同步,获取到变量的值 $.ajaxSetup({ async:false, &n bsp; }); $.post('/identityCheck', { &nbs p; 'id_number': id_number, }, function(response) { // 判断逻辑 if (response.code == '0') { &nb sp; result = true; } else { &nb sp; result = false; } }); & nbsp; // 返回 return result; }
这回终于能获取到result的值了,大功告成~
评论前必须登录!
注册