javascript - ajax获取数据为何为空?
天蓬老师
天蓬老师 2017-04-11 10:39:59
[JavaScript讨论组]
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(8)
黄舟

请将你的console.log放到回调函数success里面执行,你在ajax外面的话,在异步还没有获取到数据返回的时候你的console已经执行了

大家讲道理

ajax是异步,你需要获取数据的时候,应该把var date=getDate(endpoint); 还有 console.log(date)写到success的成功回调里,而不是外面

高洛峰

执行流程(按序号看):

    var cities=[];
    function getDate(url){
          $.ajax({   // 顺序2
            url:url,
            success:function(res){ // 顺序5
                let result=JSON.parse(res);
                cities.push(...result);
            }
         });
         
         return cities; // 顺序3
    }
    
    var date=getDate(endpoint);  //顺序1
    console.log(date); // 顺序 4

从上面流程上你就可以知道,在打印 date 之时,实际上仍是 cities = [] 。所以,打印出来的就是空的。最后说下,ajax 这边是异步的才会出现这样的情况。

高洛峰

如果题主你说的意思是console出来是空的话,那是肯定的,ajax是异步的啊

天蓬老师

获取到数据了啊

阿神

可以获取到啊。

PHP中文网

这里出现data值为空的原因是因为你使用了ajax异步请求。怎么理解这个。

就是当你执行到这一行的时候var date=getDate(endpoint);.其中getDate去使用ajax获取获取数据了,假设获取数据需要1秒钟。

但是js程序怎么执行?当他执行完var date=getDate(endpoint);的时候,会立马执行console.log(date);这个时间比去ajax请求时间短多了吧?所以你的data其实还没获取到getDate的值,所以为空。

天蓬老师

ajax异步请求,使用请求返回的数据在success回调函数中进行

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

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