【问题标题】:fullCalendar only sees JSON with one data setfullCalendar 只看到带有一个数据集的 JSON
【发布时间】:2018-07-04 05:34:29
【问题描述】:

我将包含多条记录的 Python json.dumps 结果传递给我的 HTML,即

[{'title':'xxx','start':'2018-01-01'},{'title':'ccc','start':'2018-01-02'}]

在 HTML 中,JS 以

开头
var data = jQuery.parseJSON('{{caldata | safe}}'); 
var events; 
events = []; 
events.push(data);

在 fullCalendar 选项中我有事件:事件

当我通过 1 个事件时,它会正常工作,在日历上的正确日期显示该事件。当我传递多个事件时,不会显示任何事件。

我查看了使用 print 传递到控制台的数据,它看起来格式正确。

我需要做一个循环来解析数据吗?我检查了多个示例和文章,但找不到需要的示例,但我肯定遗漏了一些东西。

【问题讨论】:

    标签: javascript json python-2.7 fullcalendar


    【解决方案1】:

    如果data 是一个数组,您要么必须循环遍历它,要么只需将events 设置为data

    示例 1(循环):

    var data = jQuery.parseJSON('{{caldata | safe}}'); 
    var events; 
    events = []; 
    for(var i=0;i<data.length;i++){
        events.push(data[i]);
    }
    

    示例 2(首选):

    var data = jQuery.parseJSON('{{caldata | safe}}'); 
    var events; 
    events = data; 
    

    【讨论】:

    • 感谢您的回复 - 我尝试了两种样式,但无法让任何事件出现 - 让我认为我的 JSON 在某种程度上不正确 - 我在 Python 中执行以下操作来准备和发送数据:c .execute(query) caldata1 = [dict(title=row[2],start=str(row[3])+"T"+str(row[4]),end=str(row[3])+" T"+str(row[7])) for row in c.fetchall()] caldata = json.dumps(caldata1) return render_template('calendar_display.html',caldata=caldata) 我在那里遗漏了什么吗?
    • 我对jQuery.parseJson不是很熟悉,但是为什么要传递'{{caldata | safe}}' 作为输入而不是简单的 json 字符串?
    • 还可以查看 jQuery 文档:“从 jQuery 3.0 开始,不推荐使用 $.parseJSON。要解析 JSON 字符串,请改用本机 JSON.parse 方法。”链接:api.jquery.com/jquery.parsejson
    • 我是初学者,可能走错了路 - 我正在尝试从 Python 中的 MYSQL 提取数据并将其发送到 fullCalendar - 为此我查询 MYSQL,阅读这些记录进入字典列表 [{'title':'xxx','start':'2018-01-01'},{'title':'ccc','start':'2018-01-02'}] .然后我在数据上使用 json.dumps,因为它被传递给 HTML 模板(返回 render_template('calendar_display.html',caldata=json.dumps(caldata))),然后在 JS 中使用上面的代码来处理它。我的策略是否偏离了基础?如果是这样,任何详细的指导将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多