Javascript 发布加载事件Fullcalendar.io

Javascript 发布加载事件Fullcalendar.io,javascript,asp.net,json,asp.net-web-api,fullcalendar,Javascript,Asp.net,Json,Asp.net Web Api,Fullcalendar,我们正在使用fullcalendar.io,希望从api控制器获取事件 我们的管制员 [Route("api/Bookings")] public class BookingApiController { // GET [HttpGet] public string Get() { var returnJson = new { events = new[]

我们正在使用fullcalendar.io,希望从api控制器获取事件

我们的管制员

[Route("api/Bookings")]
public class BookingApiController
{

    // GET
    [HttpGet]
    public string Get()                   
    {

        var returnJson = new
        {
            events = new[]
            {
                new {title = "bro", start = "2018-05-06"},
                new {title = "bro2", start = "2018-05-05"}
            }
        };
        return JsonConvert.SerializeObject(returnJson);

    }
}
我们的javascript文件

$(function () {

    $('#calendar').fullCalendar({
        //weekends : false

        dayClick: function (date) {

            window.location.href = "/Booking/Booking?selectedDate=" + date.format();
        },

        eventSources: [
            {
                url: '/api/Booking',
                color: 'yellow',    // an option!
                textColor: 'black'  // an option!
            }
        ]

    })
});

但是,javascript脚本从未正确获取事件。我们可以看到它接收到JSON,但没有将事件正确添加到日历中。

最终返回的JSON是什么样子的(如果您在浏览器工具中查看ajax请求,您可以看到它)

fullCalendar需要一个扁平的事件数组,但看起来您返回的事件是封装在另一个对象中的,所以fullCalendar不会看到它们。它只会假设没有要返回的事件

我怀疑你收到的是这样的东西:

{
  events: [ 
    //...array of events
  ]
}
鉴于您需要的只是:

[
    //...array of events
]
这是未经测试的,但我很肯定它会解决它:

[HttpGet]
public string Get()                   
{
    var events = new[]
    {
        new {title = "bro", start = "2018-05-06"},
        new {title = "bro2", start = "2018-05-05"}
    };

    return JsonConvert.SerializeObject(events);
}
注意在这个版本中没有外部的“returnJson”对象


有关事件提要系统(您正在使用的)的描述,请参阅,但这里也有一个形成有效事件列表所需的对象格式示例。

最终返回的JSON是什么样子的(如果您在浏览器工具中查看ajax请求,您可以看到它)

fullCalendar需要一个扁平的事件数组,但看起来您返回的事件是封装在另一个对象中的,所以fullCalendar不会看到它们。它只会假设没有要返回的事件

我怀疑你收到的是这样的东西:

{
  events: [ 
    //...array of events
  ]
}
鉴于您需要的只是:

[
    //...array of events
]
这是未经测试的,但我很肯定它会解决它:

[HttpGet]
public string Get()                   
{
    var events = new[]
    {
        new {title = "bro", start = "2018-05-06"},
        new {title = "bro2", start = "2018-05-05"}
    };

    return JsonConvert.SerializeObject(events);
}
注意在这个版本中没有外部的“returnJson”对象


有关事件提要系统(您正在使用)的说明,请参阅,但此处也有一个用于形成有效事件列表的对象格式示例。

您的URL错误(在controller中预订与预订),这只是一个输入错误?你说永远无法正确获取事件是什么意思?Evk yea这是一个输入错误。DavidG我们可以在网络选项卡中看到它获取JSON请求。但是,事件不会添加到日历中。这有意义吗?你的URL是错误的(控制器中的预订与预订),这只是一个输入错误?你说永远无法正确获取事件是什么意思?Evk yea这是一个输入错误。DavidG我们可以在网络选项卡中看到它获取JSON请求。但是,事件不会添加到日历中。这有意义吗?@Combii请记住在可能的情况下将答案标记为已接受。另外,由于您使用的是Web API,因此值得注意的是,如果您为事件数据创建了强类型类,您只需直接从API方法返回该类型的对象数组,Web API就会自动将它们序列化为JSON,不要手动操作。@Combii请记住在可能的情况下将答案标记为已接受。另外,由于您使用的是Web API,因此值得注意的是,如果您为事件数据创建了一个强类型类,您可以直接从API方法返回该类型的对象数组,Web API将自动将它们序列化为JSON,而不是手动执行。