首页 > js ajax 问题

js ajax 问题

请问下面那个为何为undefined


加一行代码就好了

$.ajax({
 async:false;
})

你的逻辑是同步的,但Ajax请求是异步的,js引擎会接着执行下面的部分,Ajax可能并没有执行完,returnData就没有赋值。建议你学习JS异步编程,无耻的贴上个人总结的JS异步编程


默认情况下jq的$.ajax()会是异步请求,所谓的异步就是不会对代码执行进行阻塞,也就说在进行请求的同时会继续向下执行下面的代码,不会等到请求返回后在执行,所以在你的回调函数还没进行时,代码已经向下执行到console.log(returndata)了,这个时候的returndata是没有赋值的,所以会输出undefined.


原因就是楼上兄弟说的那样,如果你想实现类似的功能,可以用defer/promise对象,或者直接

function getInfo(url,id){
  return $.ajax({...});
}
$.when(getInfo(url.id)).done(function(response){
  console.log(response);
})

你这个函数写的没意义,你应该封装一个api,传一个url,一个请求的参数,还有一个回调,然后在需要这个data的时候使用api接口发送请求,传入的回调里会有data参数,直接拿来进行后续操作


ajax是异步回调success的方法对returnData赋值的,执行的时候顺序执行,走到console.log的时候,success还没执行呢。

【热门文章】
【热门文章】