在调用一个jQuery的ajax方法时,我们有时会需要返回一个值或者赋值给某个全局变量,
但是调用方法执行结束后,却发现赋值的全局变量的值是undefined,这时很有可能是因为ajax的参数async,他的默认值是true,即异步执行,即你没拿到数据也能继续走下去,如:
function a(){
var year = 2012;
var c;
addcar_url = "http://139.224.133.119:8080/CarStar/rest/car/query2?year="+year;
$.ajax({
type:"get",
contentType: "application/json; charset=utf-8",
url:addcar_url,
async:true,
success:function(date){
c = date;
console.log(date);
}
});
console.log(c);
return c;
}
这时候打印c的值是undefined,因为他是异步的,没拿到数据就执行console.log,所以是undefined,
把async:false,c就能获取到 正确的数据,
原因是ajax的异步调用,在c还未获取到date的值的时候,就会返回c的值,
同步调用即async:false,只有 c = data执行完毕之后才会返回该方法的调用,