Jquery 使用外部拖动从FullCalendar获取数据
编辑:制作一个代码箱,显示问题: TL;DR:将一个或多个事件拖到日历并单击“保存”按钮后,我想输出格式正确的JSON,以便实际使用 在fullcalendar-2.6.1外部拖动(external dragging.html)的演示中,我一直在尝试访问被拖动到日历中的事件的数据 我尝试使用建议的:Jquery 使用外部拖动从FullCalendar获取数据,jquery,fullcalendar,Jquery,Fullcalendar,编辑:制作一个代码箱,显示问题: TL;DR:将一个或多个事件拖到日历并单击“保存”按钮后,我想输出格式正确的JSON,以便实际使用 在fullcalendar-2.6.1外部拖动(external dragging.html)的演示中,我一直在尝试访问被拖动到日历中的事件的数据 我尝试使用建议的: $("#save").click(function() { var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
$("#save").click(function() {
var eventsFromCalendar = $('#calendar').fullCalendar('clientEvents');
var eventsJson = JSON.stringify(eventsFromCalendar);
但是,eventsJson输出以下错误:
TypeError:循环对象值
我找到了一种绕过错误的方法,改为使用以下代码:
seen = [];
var eventsJson = JSON.stringify(eventsFromCalendar, function (key, val) {
if (val != null && typeof val == "object") {
if (seen.indexOf(val) >= 0) {
return;
}
seen.push(val);
}
return val;
});
对于一个事件,这将输出以下内容:
[{
"title":"My Event 3",
"start":"2016-03-15",
"end":null,
"_id":"_fc5",
"className":[],
"allDay":true,
"_allDay":true,
"_start":"2016-03-15",
"_end":null,
"source":{"events":[null]}
}]
选择两个事件将输出以下内容:
[{
"title": "My Event 3",
"start": "2016-03-23",
"end": "2016-03-25",
"_id": "_fc7",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-23",
"_end": "2016-03-25",
"source":
{
"events": [null, {
"title": "My Event 4",
"start": "2016-03-23",
"end": "2016-03-25",
"_id": "_fc13",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-23",
"_end": "2016-03-25"
}]
}
}, null]
[{
"title": "My Event 2",
"start": "2016-03-27T00:00:00.000Z",
"end": null,
"_id": "_fc2",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-27T00:00:00.000Z",
"_end": null,
"source": {
"events": [null,
{
"title": "My Event 4",
"start": "2016-03-28T00:00:00.000Z",
"end": null,
"_id": "_fc7",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-28T00:00:00.000Z",
"_end": null
},
{
"title": "My Event 5",
"start": "2016-04-04T00:00:00.000Z",
"end": null,
"_id": "_fc10",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-04-04T00:00:00.000Z",
"_end": null
}]
}
}, null, null]
使用3个事件执行此操作将输出以下内容:
[{
"title": "My Event 3",
"start": "2016-03-23",
"end": "2016-03-25",
"_id": "_fc7",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-23",
"_end": "2016-03-25",
"source":
{
"events": [null, {
"title": "My Event 4",
"start": "2016-03-23",
"end": "2016-03-25",
"_id": "_fc13",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-23",
"_end": "2016-03-25"
}]
}
}, null]
[{
"title": "My Event 2",
"start": "2016-03-27T00:00:00.000Z",
"end": null,
"_id": "_fc2",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-27T00:00:00.000Z",
"_end": null,
"source": {
"events": [null,
{
"title": "My Event 4",
"start": "2016-03-28T00:00:00.000Z",
"end": null,
"_id": "_fc7",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-03-28T00:00:00.000Z",
"_end": null
},
{
"title": "My Event 5",
"start": "2016-04-04T00:00:00.000Z",
"end": null,
"_id": "_fc10",
"className": [],
"allDay": true,
"_allDay": true,
"_start": "2016-04-04T00:00:00.000Z",
"_end": null
}]
}
}, null, null]
正如您所看到的,当它构造对象时,出现了一些错误。我不确定源:{“事件”:[null]}应该是什么,但它可能是错误的原因。我也不确定开始和结束之间的区别是什么
希望你能帮忙。
谢谢 使用上面的代码,因为我不喜欢js,所以请使用任何后端语言 对我来说,我在php中使用了以下内容
$object = json_decode($request->request->get('hoursArray')[0]);
$myHours =[];
for($i=0;$i<count($object);$i++){
if ($i==0){
$myHours[$i]['title'] = $object[0]->title;
$myHours[$i]['date'] = $object[0]->start;
}else{
$myHours[$i]['title'] = $object[0]->source->events[$i]->title;
$myHours[$i]['date'] = $object[0]->source->events[$i]->start;
}
}
$object=json_decode($request->request->get('hoursArray')[0]);
$myHours=[];
对于($i=0;$ititle;
$myHours[$i]['date']=$object[0]->start;
}否则{
$myHours[$i]['title']=$object[0]->source->events[$i]->title;
$myHours[$i]['date']=$object[0]->source->events[$i]->start;
}
}
你能准备一个演示,用JSFIDLE或codebin之类的东西来说明你的问题吗?是的,你明白了。我想你想把JSON发送到一个保存它的页面,不是吗?为什么不创建自己的对象,在每次拖放
事件后只存储想要的值,而不是只在单击\save
按钮时保存?是的,我正在使用ASP.NET MVC,所以我需要将其发送到控制器,但我需要通过单击按钮将其发送。