【问题标题】:FullCalendar - JSON source doesn't work but using the JSON data directly doesFullCalendar - JSON 源不起作用,但直接使用 JSON 数据可以
【发布时间】:2012-03-27 02:05:54
【问题描述】:

我在我的页面上正确设置了 FullCalendar,我正在尝试让它读取 json 源代码。

当我通过 url 直接访问它时,我的 json 源工作正常,如果我复制屏幕上输出的数据并将其直接放入 FullCalendar 事件中,该事件就会显示出来。

将事件设置为我的 json 源的 url 不起作用。我使用 Firebugs NET 面板检查了调用,它正确定位了 JSON 源,并获取了正确的数据,但只是没有在日历上显示。

我已设置 id、title、allday(为 true)开始(unix 和 yyyy-mm-dd 格式)和结束(尽管这是可选的)

有什么想法吗?

<script>
$(document).ready(function() {
    $('#calendar').fullCalendar({
        events: "eventsjson" // links to a controller in my symfony2 project. accessing cirectly gives correct json output
    });
});
</script>

json来源给出的数据:

{"id":1,"title":"Test Event","start":1331309234,"allDay":true}

将 ^^^ 直接插入事件设置中没有问题。 (时间戳由 php 的 time() 函数生成)

【问题讨论】:

  • 没有看到代码和 JSON 就无法提供帮助(现场演示会更好)。
  • 我假设"eventsjson" 是伪代码,它实际上是您真实系统中同一域 (http://sameDomain.com/feed.html) 上页面的有效 URL?
  • 使用浏览器控制台查看ajax请求,会看到状态和数据返回(如果有的话)
  • JAAulde - 恐怕你猜错了。 “eventsjson”是一个有效的网址。它指向 Symfony2 框架中的一个控制器,它返回一个基本的 JSON 对象,并且 100% 有效:)

标签: php jquery json fullcalendar


【解决方案1】:

问题在于,当 JSON 对象中只有 1 个条目时,PHP 的自然行为不包括 [] 括号。

如果添加第二个,PHP 会添加 [] 括号,并且 FullCalendar 插件可以正常工作。

老实说,我认为这是 FullCalendar 的错,并已将其作为错误提交给作者。

【讨论】:

    【解决方案2】:

    我在这个问题上工作了好几个小时,直到找到了解决方案。

    在我的项目中,我使用的是 CakePHP v3 和 FullCalendar v2,两者都配置良好。如果我在数组模式下设置事件,它工作得很好......但在 URL 模式下没有。许多相同的问题:FullCalendar 获取脚本(我在控制器中的操作)并获取 de JSON 数据,但任何事件都显示在日历中。

    我构建的 JSON 响应是有效的(我在 http://jsonlint.com/ 进行了验证),但在 FullCalendar 上没有显示任何事件。

    这是我无效的回复:

    {
        "events": [
            {
                "id": "1",
                "title": "event1",
                "start": 1435336659,
                "end": 1436200659,
                "allday": false
            },
            {
                "id": "2",
                "title": "event2",
                "start": "2015-07-06 11:37:39",
                "allday": false
            }
        ]
    }
    

    我用这段代码(在我的控制器中)构建了这个响应:

    $this->set('events', $event_array);
    $this->set('_serialize', ['events']);
    

    问题在于我将变量设置为 JSON 视图的方式。解决办法是:

    $this->set(['events' => $event_array, '_serialize' => 'events']);
    

    您可以在 Cake\View\JsonView 类中检查这一点。此代码构建以下 JSON 响应:

    [
        {
            "id": "1",
            "title": "event1",
            "start": 1435336961,
            "end": 1436200961,
            "allday": false
        },
        {
            "id": "2",
            "title": "event2",
            "start": "2015-07-06 11:42:41",
            "allday": false
        }
    ]
    

    就是这样……问题在于外部的“{}”和对 FullCalendar 无效的“events”关键字。

    我希望这对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-14
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2019-05-26
      相关资源
      最近更新 更多