扫码关注官方订阅号
请问下面那个为何为undefined
认证高级PHP讲师
ajax是异步回调success的方法对returnData赋值的,执行的时候顺序执行,走到console.log的时候,success还没执行呢。
原因就是楼上兄弟说的那样,如果你想实现类似的功能,可以用defer/promise对象,或者直接
function getInfo(url,id){ return $.ajax({...}); } $.when(getInfo(url.id)).done(function(response){ console.log(response); })
你的逻辑是同步的,但Ajax请求是异步的,js引擎会接着执行下面的部分,Ajax可能并没有执行完,returnData就没有赋值。建议你学习JS异步编程,无耻的贴上个人总结的JS异步编程
加一行代码就好了
$.ajax({ async:false; })
默认情况下jq的$.ajax()会是异步请求,所谓的异步就是不会对代码执行进行阻塞,也就说在进行请求的同时会继续向下执行下面的代码,不会等到请求返回后在执行,所以在你的回调函数还没进行时,代码已经向下执行到console.log(returndata)了,这个时候的returndata是没有赋值的,所以会输出undefined.
你这个函数写的没意义,你应该封装一个api,传一个url,一个请求的参数,还有一个回调,然后在需要这个data的时候使用api接口发送请求,传入的回调里会有data参数,直接拿来进行后续操作
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
ajax是异步回调success的方法对returnData赋值的,执行的时候顺序执行,走到console.log的时候,success还没执行呢。
原因就是楼上兄弟说的那样,如果你想实现类似的功能,可以用defer/promise对象,或者直接
你的逻辑是同步的,但Ajax请求是异步的,js引擎会接着执行下面的部分,Ajax可能并没有执行完,returnData就没有赋值。建议你学习JS异步编程,无耻的贴上个人总结的JS异步编程
加一行代码就好了
默认情况下jq的$.ajax()会是异步请求,所谓的异步就是不会对代码执行进行阻塞,也就说在进行请求的同时会继续向下执行下面的代码,不会等到请求返回后在执行,所以在你的回调函数还没进行时,代码已经向下执行到console.log(returndata)了,这个时候的returndata是没有赋值的,所以会输出undefined.
你这个函数写的没意义,你应该封装一个api,传一个url,一个请求的参数,还有一个回调,然后在需要这个data的时候使用api接口发送请求,传入的回调里会有data参数,直接拿来进行后续操作