AJAX获取数据,数据是已经拉下来了,但我在页面使用console.log(date)为什么打印出来的是0,而我直接在控制台使用console.log(date.length)打印出来的是1000。现在我知道是异步的原因造成了,但是如何解决呢,如果我不想设置sync的话?
如果我想在下面的dateFilter函数中取得值该怎么写?是直接将filter卸载ajax的success中么?
Document
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为
ajax是异步请求,当你调用var date=getDate(endpoint);的时候,ajax 请求才发出去,还没有返回结果,succss 的回调函数并没有执行,所以此时cities还是为空数组,并且被赋值给了date。但是当你打开控制台打印的的时候ajax 已经返回结果并且执行success函数了,此时cities已经被赋值为返回的结果了。并且因为数组是引用类型,cities和date指向同一个数组。当你通过cities修改了数组,date也引用这个数组,所以你打印date.length发现date数据变得正常了了。AJAX改为同步
请在回调函数中对取回的数据进行操作。否则,如果请求返回的时间只要稍微长一点,就会先顺序执行下面的代码,而后再处理回调。
同时也建议不要把AJAX写成同步的,这样会阻塞页面。