Search code examples
asp.netfullcalendarwebmethod

Populate FullCalendar eventsources with webmethod json feed in ASP.NET?


How can I consume a JSON feed? The webmethod gets hit, but it throwns the error, "error while fetching events." I think its related to ASP.NET wrapping everything with "d." but I don't know how to proceed.

[WebMethod]
public string GetEvents(string webMethodParam)
{
  return @"[{""title"": ""All Day Event"",""start"": ""2014-09-01""}]";
}

 function createCal() {
        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },

            eventSources: [{
                        url: "<%= AdminPath %>WebMethods/WebService1.asmx/GetEvents",
                        type: 'POST',
                        data: {
                            webMethodParam: 'something'
                        },
                        error: function () {
                            alert('there was an error while fetching events!');
                        }
                    }],
            defaultDate: '2014-09-12',
            editable: false,
            eventLimit: true
        });
    }

Solution

  • It was related to this weird "d." wrapper. To fix it I did the following.

       [WebMethod]
            public void GetEvents(string webMethodParam)
            {
                string ret = @"[{""title"": ""All Day Event"",""start"": ""2014-09-01""}]";
                this.Context.Response.ContentType = "application/json; charset=utf-8";
                this.Context.Response.Write(ret);
            }
    

    To create the calendar to async call the webmethod with the current date, I did this.

    function getCalendarDisplayDate() {
    
            try {
                var now = moment().format("dddd, MMMM Do, YYYY, h:MM:ss A");
                var m = moment();
    
                var moment2 = $('#calendar').fullCalendar('getDate');
                return moment2.format();
            }
            catch (err) {
    
            }
    
            return "init"; 
        }
    
        function createCal() {
            $('#calendar').fullCalendar({
                header: {
                    left: 'prev,next today',
                    center: 'title',
                    right: 'month,agendaWeek,agendaDay'
                },
    
                eventSources: [{
                    url: "<%= AdminPath %>WebMethods/WebService1.asmx/GetEvents",
                    type: 'POST',
                    data: {
                        webMethodParam: getCalendarDisplayDate
                    },
                    error: function (v) {
                        alert('there was an error while fetching events!');
                    }
                }],
                defaultDate: '2014-09-12',
                editable: false,
                eventLimit: true
            });
        }