我是 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,但是事件仍然没有呈现到日历中......
有只小跳蛙
相关分类