javascript - 页面console.log为什么获取不到数组长度 ?
PHPz
PHPz 2017-04-11 10:37:04
[JavaScript讨论组]

AJAX获取数据,数据是已经拉下来了,但我在页面使用console.log(date)为什么打印出来的是0,而我直接在控制台使用console.log(date.length)打印出来的是1000。现在我知道是异步的原因造成了,但是如何解决呢,如果我不想设置sync的话?

如果我想在下面的dateFilter函数中取得值该怎么写?是直接将filter卸载ajax的success中么?




    
    Document


    
  • filter for a city
  • or a city
PHPz
PHPz

学习是最好的投资!

全部回复(4)
PHPz

因为ajax是异步请求,当你调用var date=getDate(endpoint);的时候,ajax 请求才发出去,还没有返回结果,succss 的回调函数并没有执行,所以此时cities 还是为空数组,并且被赋值给了date。但是当你打开控制台打印的的时候ajax 已经返回结果并且执行success函数了,此时cities已经被赋值为返回的结果了。并且因为数组是引用类型,citiesdate指向同一个数组。当你通过cities修改了数组,date也引用这个数组,所以你打印date.length 发现date数据变得正常了了。

怪我咯

AJAX改为同步

高洛峰

请在回调函数中对取回的数据进行操作。否则,如果请求返回的时间只要稍微长一点,就会先顺序执行下面的代码,而后再处理回调。
同时也建议不要把AJAX写成同步的,这样会阻塞页面。

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

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