javascript - FullCalendar:最初未从函数调用 (AJAX) 呈现的事件

标签 javascript jquery ajax node.js fullcalendar

我已将我的 FullCalendar 配置为从 AJAX 请求中提取其事件,但当页面首次加载时它们不会呈现在日历上。

$(document).ready(function() {

    sh1client = new Array();
    sh2client = new Array();

    $('#sh1_cal').fullCalendar({

         height: 1000,
         minTime:'9:00am',
         maxTime:'5:00pm',
         editable: false,

         events: function(start, end, callback) {

            $.ajax({
                type: 'GET',
                url: 'http://localhost:8080/getEvents',
                dataType: 'json',
                success: function(reply) {

                    console.log(reply.first);
                    callback(reply.first);

                }
            });
        }
    });


    $("#sh1_cal").fullCalendar('addEventSource', sh1client);   // these are the clientside arrays

});

在服务器上,

app.get('/getEvents', function(req, res){

    console.log('Server: passing events...');

    var arrays = {first: sh1, second: sh2}
    var pack = JSON.stringify(arrays)

    res.writeHead(200, {'Access-Control-Allow-Origin' : '*', 'Content-Type': 'application/json'});
    res.end(pack);

});

是否有任何原因导致这些事件最初无法加载?一切似乎都顺利通过,但好像回调不起作用或其他原因。

编辑:这是我尝试过的另一种方法

events: { 

            url: 'http://localhost:8080/getEvents',
            type: 'GET',

            error: function() {
                alert('there was an error while fetching events!');
            },

            success: function(reply) {
                console.log(reply);
                //callback(reply.first);
            },

            color: 'yellow',   // a non-ajax option
            textColor: 'black' // a non-ajax option

         }

编辑:JavaScript 控制台显示它在页面加载后立即发布到页面(这是数组中的第一个对象:

[Object]
allDay: "false"
end: "1392129000"
id: "phil@google.com"
room: "Sh1"
start: "1392127200"
title: "Phil - Google"
__proto__: Object
length: 1
__proto__: Array[0]

最佳答案

您是否尝试过使用完整日历,而不是使用您自己的 ajax 调用?

http://arshaw.com/fullcalendar/docs/event_data/events_json_feed/

Fullcalendar 默认数据类型为 JSON,缓存为 false。

将您的一些代码与文档中的代码相结合:

$('#calendar').fullCalendar({

    events: {
        url: 'http://localhost:8080/getEvents',
        type: 'GET',
        error: function() {
            alert('there was an error while fetching events!');
        },
        success: function(reply) {
            console.log(reply.first);
            callback(reply.first);
        },
        color: 'yellow',   // a non-ajax option
        textColor: 'black' // a non-ajax option
    }

});

您可以尝试只剪切和粘贴 JSON 字符串,看看是否可以在不调用 ajax 的情况下呈现

     events: [
     {
            end: 1392129000,
            id: "phil@google.com",
            room: "Sh1",
            start: 1392127200,
            title: "Phil - Google"
      }]

您还可以处理响应:

$('#myCalendar').fullCalendar({
...
   eventSources : [{
      url: 'myUrl',
      type: 'GET',
   },
   success: function(replyObject) {
      var results = [];
      var reply= replyObject.Results[0];
      for(var index in reply) {
         results.push(reply[index]);
      }
      return results;
    }
    }]
...

关于javascript - FullCalendar:最初未从函数调用 (AJAX) 呈现的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707281/

相关文章:

javascript - 强类型的 typescript 集合

javascript - jquery 在 ajax 请求后丢失数据括号

jquery - kendo ui treeview 存在 json 速度问题

jquery - 如何使用rails bootstrap modal通过ajax提交表单

javascript - 向 React 添加 JS 脚本标签

javascript - 验证不适用于所有字段

javascript 专注于验证失败的文本框,在 Chrome 和 Firefox 中工作方式不同

jquery - 之前更改背景颜色 div

javascript - 如何使用 PHP 获取多选项选择中的所有选项?

java - REST ajax 请求每 5 分钟调用一次 |网络逻辑