使用一个json源渲染fullcalendar和一个积压

时间:2015-05-30 06:42:16

标签: json fullcalendar

我正在使用Fullcalendar和积压区域,最终用户可以在其中查看并拖放日历中的事件。用户还可以按位置,优先级和负责(以及更多......)他想要查看的事件进行过滤:这会更新待办事项和日历。这很好用,但到目前为止,积压和日历通过2个不同的ajax调用进行更新。因此,当事件出现在这两个区域时存在延迟,并且代码有点复杂,因为我必须管理两个Json流(在客户端和服务器端),尽管它们使用相同的参数和相同的数据库和表,没有提到第二个MySQL连接成本:-)。我想知道是否可以通过Ajax调用只接收两个Json的一个数组,并使用一个在日历上呈现事件并使用另一个来刷新积压列表。

以下是我使用的代码:

            eventSources: [
                {
                    url: './ajax/_schedule_json.php',
                    type: 'POST',
                    data: function() {
                        return {
                            location_id: $('#location_id').val(),
                            priority_id: $('#priority_id').val(),
                            responsible_id: $('#responsible_id').val(),
                            ...
                        };
                    },
                    success: function(data) {  },
                    fail: function(data) { }
                }
            ],

谢谢!

1 个答案:

答案 0 :(得分:0)

实际上这很容易。假设您的服务器端脚本生成了两个json(事件和积压)的数组,您只需要打开文件fullcalendar.js并搜索:

                success: function(events) {
                    events = events || [];
                    var res = applyAll(success, this, arguments);
                    if ($.isArray(res)) {
                        events = res;
                    }
                    callback(events);
                }

修改第一行和第二行,如下所示:

                success: function(json) { // Modified
                    events = json.events || []; // Modified
                    var res = applyAll(success, this, arguments);
                    if ($.isArray(res)) {
                        events = res;
                    }
                    callback(events);
                }

然后你可以在主javascript文件中使用第二个json:

            eventSources: [
                {
                    ...
                    success: function(data) { 
                        $.each(data.backlog, function (i, item) {
                            // do whatever you want with the backlog
                        });
                    }
                }
            ],