jquery ajax get 获取返回值是undefined解决方案
正常情况下,由于jquery的
.post()和$.get()方法获取到的数据若想返回给js函数,会发现返回值是undefined,这是由于ajax默认是异步请求数据的,换句话说,你想获取的变量值还在请求中,这时候你读取这个变量值就只能是undefined了,所以需要加入一行async:false
,要求ajax是同步执行。如下例程:
//ajax获取数据
function smsverify(){
var check_res;
var ajaxurl = APP_ROOT+"/index.php";
var query = new Object();
$.ajax({
async:false,
url: ajaxurl,
data:query,
type: "POST",
dataType: "json",
success: function(result){
check_res=result;
},error:function(){}
});
return check_res;
}
核心是加入 async:false,如果你没有加入这一行,你会发现函数返回的undefined
async作用
async. 默认是 true,即为异步方式,$.ajax
执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发$.ajax
里的success方法,这时候执行的是两个线程。
async 设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。