草庐IT

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

coder 2024-07-09 原文

我是 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>

下面是我的 Gin 处理程序:

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})
}

下面是从 db 和 jes 返回的 []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}]

[91 123 34 105 100 34 58 49 44 34 116 105 116 108 101 34 58 34 116 101 115 116 32 101 118 101 110 116 34 44 34 115 116 97 114 116 34 58 34 50 48 49 56 45 49 48 45 48 57 84 50 48 58 48 55 58 53 48 46 52 48 50 50 56 54 43 48 56 58 48 48 34 44 34 101 110 100 34 58 34 50 48 49 56 45 49 48 45 48 57 84 50 48 58 53 55 58 53 48 46 52 48 50 50 56 54 43 48 56 58 48 48 34 44 34 100 101 115 99 114 105 112 116 105 111 110 34 58 49 125 44 123 34 105 100 34 58 50 44 34 116 105 116 108 101 34 58 34 116 101 115 116 32 101 118 101 110 116 34 44 34 115 116 97 114 116 34 58 34 50 48 49 56 45 49 48 45 49 49 84 49 53 58 48 51 58 52 51 46 57 54 51 49 57 56 43 48 56 58 4848 34 44 34 101 110 100 34 58 34 50 48 49 56 45 49 48 45 49 49 84 49 53 58 53 51 58 52 51 46 57 54 51 49 57 56 43 48 56 58 48 48 34 44 34 100 101 115 99 114 105 112 116 105 111 110 34 58 49 125 93]

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

查看respons body,发现事件是这样的

{"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})
}

reponse 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}]}

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

最佳答案

似乎没有提供 fullcalendar 可以读取的确切响应格式,因此将处理程序更改为不使用 key 响应解决了问题

func EventsJSON(c *gin.Context) {
start := c.PostForm("start")
end := c.PostForm("end")
es := models.GetEvents(start, end)
c.JSON(200, es})
}

关于go - Fullcalendar 不呈现从 golang gin 获取的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52775405/

有关go - Fullcalendar 不呈现从 golang gin 获取的事件的更多相关文章

  1. ruby - 简单获取法拉第超时 - 2

    有没有办法在这个简单的get方法中添加超时选项?我正在使用法拉第3.3。Faraday.get(url)四处寻找,我只能先发起连接后应用超时选项,然后应用超时选项。或者有什么简单的方法?这就是我现在正在做的:conn=Faraday.newresponse=conn.getdo|req|req.urlurlreq.options.timeout=2#2secondsend 最佳答案 试试这个:conn=Faraday.newdo|conn|conn.options.timeout=20endresponse=conn.get(url

  2. ruby - 从 Ruby 中的主机名获取 IP 地址 - 2

    我有一个存储主机名的Ruby数组server_names。如果我打印出来,它看起来像这样:["hostname.abc.com","hostname2.abc.com","hostname3.abc.com"]相当标准。我想要做的是获取这些服务器的IP(可能将它们存储在另一个变量中)。看起来IPSocket类可以做到这一点,但我不确定如何使用IPSocket类遍历它。如果它只是尝试像这样打印出IP:server_names.eachdo|name|IPSocket::getaddress(name)pnameend它提示我没有提供服务器名称。这是语法问题还是我没有正确使用类?输出:ge

  3. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  4. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  5. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  6. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

  7. ruby - 没有类方法获取 Ruby 类名 - 2

    如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象

  8. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  9. ruby - 如何使用 CarrierWave 从 S3 获取真实文件 - 2

    我有一个应用程序可以读取文件的内容并为其编制索引。我将它们存储在磁盘本身中,但现在我使用的是AmazonS3,因此以下方法不再适用。事情是这样的:defperform(docId)@document=Document.find(docId)if@document.file?#Youshould'tcreateanewversion@document.versionlessdo|doc|@document.file_content=Cloudoc::Extractor.new.extract(@document.file.file)@document.saveendendend@docu

  10. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

随机推荐