JavaScript如何从JSON文件取值并赋值给数组内的变量
问题原因
- 首先
$.getJSON是异步网络请求,你当前把events数组赋值的代码写在请求回调函数外部,代码执行顺序是先执行外部的events赋值,再等请求成功后才会执行回调里的逻辑,此时gettitle还是空字符串,自然拿不到值。 - 其次你在遍历返回数据的时候只给同一个
gettitle变量重复赋值,最后只能保留最后一条数据的title,没法拿到所有记录的标题。
修复后的代码
var events = []; // 注意如果你的date、nextDay是每个事件独有的参数,建议直接从接口返回的v对象里读取对应字段 $.getJSON(fileLocation, function (data) { // 请求成功拿到数据后再构建events数组 $.each(data.data, function(i, v) { // 每遍历一条记录就往events里新增一个日历事件对象 events.push({ id: i + 1, // 也可以直接使用接口返回的记录唯一id url: '', title: v.title, start: date, end: nextDay, allDay: false, extendedProps: { calendar: 'school' } }) }); // 日历组件的初始化、事件列表更新操作必须放在这里执行,确保数据已经加载完成 // 比如你用的FullCalendar的话,就把 calendar.render() 或者 calendar.addEventSource(events) 写在这里 });
注意事项
- 如果每条日历事件的起止时间、跳转链接等参数是存在JSON里的,直接读取
v.对应字段即可,不要用全局的固定值,避免所有事件参数都一致。 - 所有依赖
events数组的逻辑都要放在异步请求的回调内部,或者在请求完成后再触发执行,不能写在请求外部。
内容的提问来源于stack exchange,提问作者Kunal Parekh
相关产品推荐
相关产品推荐

