javascript - js ajax 问题
PHP中文网
PHP中文网 2017-04-11 12:10:22
[JavaScript讨论组]

请问下面那个为何为undefined

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(6)
巴扎黑

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

高洛峰

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

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

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

黄舟

加一行代码就好了

$.ajax({
 async:false;
})
PHP中文网

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

伊谢尔伦

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号