JS, fullcalendar, the “events” parameter doesn't get the result of an executed function
本问题已经有最佳答案,请猛点这里访问。
回答:错误不在同步或异步调用中,而在于使用fullcalendar设置的函数。
事件:功能(开始,结束,时区,回调){...}
我可以看到信息切换我如何管理ajax(sjax ...)的结果,但日历没有获取信息。
似乎行"events:getJSON"不起作用。 但功能是通话
现在,我有一个新问题,函数getJSON从webmethod获取JSON,但日历不显示它们。
我也尝试用注释代码获得结果,但它不起作用。
这里有来自js的两种方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | function getJSON() { start = $('#calendar').fullCalendar('getDate').format(); duration = $('#calendar').fullCalendar('getCalendar').moment().format(); alert(start); var retour; $.ajax({ async: false, type: 'POST', url:"ConsultationPlanning.aspx/getPlanning", data: '{"start":"' + start + '","end":"' + duration + '"}', contentType:"application/json; charset=utf-8", dataType:"json", success: function (msg) { retour = JSON.parse(msg.d); retour = msg.d; }, error: function () { alert("erreur");} }); alert(retour); return retour; }; $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, hiddenDays: [0], defaultView: 'agendaWeek', editable: false, allDaySlot: false, selectable: false, events: getJSON, /*function (start, end, callback) { start = $('#calendar').fullCalendar('getDate').format(); duration = $('#calendar').fullCalendar('getCalendar').moment().format(); $.ajax({ type: 'POST', url:"ConsultationPlanning.aspx/getPlanning", data: '{"start":"' + start + '","end":"' + end + '"}', contentType:"application/json; charset=utf-8", dataType:"json", success: function (msg) { var rdv = []; alert(msg.d); //var events =JSON.parse(msg.d); $(msg.d).each(function () { rdv.push({ id: $(this).attr('id'), title: $(this).attr('title'), start: $(this).attr('start'), }) }) alert("first date :" + rdv[0].start); //"first date: 2015-05-06T14:33:00" is what i get callback(rdv); //the callback generate an error message. it says, it's waiting for a function } }) } }); |
我几天前发布了一个类似的问题,但它是在另一个实现中:
fullcalendar不显示事件
这就是使用
1 2 3 4 5 6 7 8 9 10 11 | function getJSON(start, end, callback) { ... $.ajax({ ... success : function(msg) { retour = JSON.parse(msg.d); callback(retour); } }); // no need to return anything here } |
请参阅fullcalendar v1的文档。* here:events function
注意:如果您使用的是fullcalendar v2或更高版本,则应将功能签名更改为:
1 2 | function getJSON(start, end, timezone, callback) { ... |
请参阅doc for v2。* here:events function