猿问

Fullcalendar 不呈现从 golang gin 获取的事件

我是 golang 和 web-dev 的新手,我使用 gin 作为 api 为 fullcalendar 提供事件作为 json。这是我的全日历事件配置:


<script>

    $(function(){

        $('#calendar').fullCalendar({

            header: {

                left: 'prev,next today',

                center: 'title',

                right: 'month,agendaWeek,agendaDay'

            },

            defaultView: 'month',

            events: {

                url: '/events',

                type: 'POST'

            }

        })

    });

</script>

下面是我的杜松子酒处理程序:


func EventsJSON(c *gin.Context) {

    start := c.PostForm("start")

    end := c.PostForm("end")

    es := models.GetEvents(start, end)

    jes, err := json.Marshal(es)

    if err != nil {

        fmt.Println(err)

    }

    c.JSON(200, gin.H{"events": jes})

}

但是事件没有在日历上呈现,我不确定在响应客户端之前是否应该用 string(jes) 转换它或者 fullcalendar 事件配置有问题


我检查了响应主体,发现事件是这样的


{"events":"W3siaWQiOjEsInRpdGxlIjoidGVzdCBldmVudCIsInN0YXJ0IjoiMjAxOC0xMC0wOVQyMDowNzo1MC40MDIyODYrMDg6MDAiLCJlbmQiOiIyMDE4LTEwLTA5VDIwOjU3OjUwLjQwMjI4NiswODowMCIsImRlc2NyaXB0aW9uIjoxfSx7ImlkIjoyLCJ0aXRsZSI6InRlc3QgZXZlbnQiLCJzdGFydCI6IjIwMTgtMTAtMTFUMTU6MDM6NDMuOTYzMTk4KzA4OjAwIiwiZW5kIjoiMjAxOC0xMC0xMVQxNTo1Mzo0My45NjMxOTgrMDg6MDAiLCJkZXNjcmlwdGlvbiI6MX1d"}

我做 string(jes) 并且响应 json 变成


{"events":"[{\"id\":1,\"title\":\"test event\",\"start\":\"2018-10-09T20:07:50.402286+08:00\",\"end\":\"2018-10-09T20:57:50.402286+08:00\",\"description\":1},{\"id\":2,\"title\":\"test event\",\"start\":\"2018-10-11T15:03:43.963198+08:00\",\"end\":\"2018-10-11T15:53:43.963198+08:00\",\"description\":1}]"}

如果我不做 json.Marshal()


func EventsJSON(c *gin.Context) {

    start := c.PostForm("start")

    end := c.PostForm("end")

    es := models.GetEvents(start, end)

    c.JSON(200, gin.H{"events": es})

}


事实证明 c.JSON 已经将它序列化为 json,但是事件仍然没有呈现到日历中......


明月笑刀无情
浏览 112回答 1
1回答

有只小跳蛙

它似乎没有提供 fullcalendar 可以读取的确切响应格式,因此将处理程序更改为不使用密钥响应解决了问题func EventsJSON(c *gin.Context) {start := c.PostForm("start")end := c.PostForm("end")es := models.GetEvents(start, end)c.JSON(200, es})}
随时随地看视频慕课网APP

相关分类

Go
我要回答