仅使用一个 json 源渲染完整日历和一个积压工作
render fullcalendar and one backlog with just one json source
我将 Fullcalendar 与积压区域一起使用,最终用户可以在其中查看和拖放日历中的事件 in/out。用户还可以按位置、优先级和负责人(以及更多...)过滤他想看到的事件:这会更新待办事项和日历。这很好用,但到目前为止,积压工作和日历是通过 2 个不同的 ajax 调用更新的。因此,当事件出现在这两个区域时会有延迟,并且代码有点复杂,因为我必须管理两个 Json 流(在客户端和服务器端),尽管它们使用相同的参数和相同的数据库和 table,更不用说第二个 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) { }
}
],
谢谢!
其实这很容易。假设您在服务器端的脚本生成两个 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
});
}
}
],
我将 Fullcalendar 与积压区域一起使用,最终用户可以在其中查看和拖放日历中的事件 in/out。用户还可以按位置、优先级和负责人(以及更多...)过滤他想看到的事件:这会更新待办事项和日历。这很好用,但到目前为止,积压工作和日历是通过 2 个不同的 ajax 调用更新的。因此,当事件出现在这两个区域时会有延迟,并且代码有点复杂,因为我必须管理两个 Json 流(在客户端和服务器端),尽管它们使用相同的参数和相同的数据库和 table,更不用说第二个 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) { }
}
],
谢谢!
其实这很容易。假设您在服务器端的脚本生成两个 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
});
}
}
],