扫码关注官方订阅号
欢迎选择我的课程,让我们一起见证您的进步~~
请将你的console.log放到回调函数success里面执行,你在ajax外面的话,在异步还没有获取到数据返回的时候你的console已经执行了
ajax是异步,你需要获取数据的时候,应该把var date=getDate(endpoint); 还有 console.log(date)写到success的成功回调里,而不是外面
var date=getDate(endpoint);
console.log(date)
执行流程(按序号看):
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 这边是异步的才会出现这样的情况。
date
cities = []
ajax
如果题主你说的意思是console出来是空的话,那是肯定的,ajax是异步的啊
获取到数据了啊
可以获取到啊。
这里出现data值为空的原因是因为你使用了ajax异步请求。怎么理解这个。
就是当你执行到这一行的时候var date=getDate(endpoint);.其中getDate去使用ajax获取获取数据了,假设获取数据需要1秒钟。
getDate
但是js程序怎么执行?当他执行完var date=getDate(endpoint);的时候,会立马执行console.log(date);这个时间比去ajax请求时间短多了吧?所以你的data其实还没获取到getDate的值,所以为空。
console.log(date);
ajax异步请求,使用请求返回的数据在success回调函数中进行
success
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
请将你的console.log放到回调函数success里面执行,你在ajax外面的话,在异步还没有获取到数据返回的时候你的console已经执行了
ajax是异步,你需要获取数据的时候,应该把
var date=getDate(endpoint);还有console.log(date)写到success的成功回调里,而不是外面执行流程(按序号看):
从上面流程上你就可以知道,在打印
date之时,实际上仍是cities = []。所以,打印出来的就是空的。最后说下,ajax这边是异步的才会出现这样的情况。如果题主你说的意思是console出来是空的话,那是肯定的,ajax是异步的啊
获取到数据了啊
可以获取到啊。
这里出现data值为空的原因是因为你使用了ajax异步请求。怎么理解这个。
就是当你执行到这一行的时候
var date=getDate(endpoint);.其中getDate去使用ajax获取获取数据了,假设获取数据需要1秒钟。但是js程序怎么执行?当他执行完
var date=getDate(endpoint);的时候,会立马执行console.log(date);这个时间比去ajax请求时间短多了吧?所以你的data其实还没获取到getDate的值,所以为空。ajax异步请求,使用请求返回的数据在
success回调函数中进行