我是 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,但是事件仍然没有呈现到日历中......
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
它似乎没有提供 fullcalendar 可以读取的确切响应格式,因此将处理程序更改为不使用密钥响应解决了问题
func EventsJSON(c *gin.Context) {
start := c.PostForm("start")
end := c.PostForm("end")
es := models.GetEvents(start, end)
c.JSON(200, es})
}
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消