Error loading scheduler events from JSON

I am getting a javascript error when I am trying to load scheduler events from my MVC controller, causing the calendar to display empty. The error is 0x800a138f - JavaScript runtime error: Unable to get property ‘valueOf’ of undefined or null reference at line 193, column 472 of dhtmlxscheduler.js. I have verified the date format being passed in the JSON and in case it was a default date format issue I added the statement to set the Config.api_date format to “%m/%d/%Y &H:%i:%s” (to represent my windows MM/dd/yyyy HH:mm:ss date format). Below is what my JSON looks like:

[{“id”:2094,“text”:“How to Choose a House”,“start_date”:“12/21/2015 00:00:00”,“end_date”:“12/21/2015 02:00:00”},{“id”:2092,“text”:“How to Choose a House”,“start_date”:“12/23/2015 00:00:00”,“end_date”:“12/23/2015 02:00:00”},{“id”:2096,“text”:“How to Choose a House”,“start_date”:“12/24/2015 00:00:00”,“end_date”:“12/24/2015 02:00:00”},{“id”:2097,“text”:“How to Choose a House”,“start_date”:“12/30/2015 00:00:00”,“end_date”:“12/30/2015 02:00:00”},{“id”:2095,“text”:“How to Choose a House”,“start_date”:“12/30/2015 00:00:00”,“end_date”:“12/30/2015 02:00:00”}]

My server-side init code is below:

public ActionResult ShowCalendar()
{

        var scheduler = new DHXScheduler(this);
        scheduler.Skin = DHXScheduler.Skins.Flat;
        scheduler.InitialView = "month";
        scheduler.Config.api_date = "%m/%d/%Y &H:%i:%s";
        scheduler.LoadData = true;// allows loading data
         
        return View(scheduler);
    }

public ContentResult Data()
{

        // Database first stored proc to return course list - I know I can probably
        // use aliases in data annotations and use this directly but am iterating it for now,
        // making sure my JSON object has the correct field names.
        List<blsp_GetCurrentCoursesScheduled_Result> CurrentScheduledCourses = db.blsp_GetCurrentCoursesScheduled().ToList();

        List<CourseCalendarEvent> ScheduledCourses = new List<CourseCalendarEvent>();

        foreach (blsp_GetCurrentCoursesScheduled_Result ScheduledCourse in CurrentScheduledCourses)
        {
            CourseCalendarEvent newCourse = new CourseCalendarEvent();
            newCourse.id = ScheduledCourse.CourseScheduleID;
            newCourse.text = ScheduledCourse.SessionName;
            newCourse.start_date = ScheduledCourse.StartDate.ToString("MM/dd/yyyy HH:mm:ss");
            int CourseHours = 2;
            newCourse.end_date = ScheduledCourse.StartDate.AddHours(CourseHours).ToString("MM/dd/yyyy HH:mm:ss");
            ScheduledCourses.Add(newCourse);
        }

        string myJson = JsonConvert.SerializeObject(ScheduledCourses);
        return new SchedulerAjaxData(myJson);
    }

My ScheduledCourses class looks like the following:

public class CourseCalendarEvent
{
public int id = 0;
public string text = “”;
public string start_date = “”;
public string end_date = “”;
}

Been beating my head against the wall for several hours now and hoping someone can point out what I am doing wrong. Thanks in advance!

It never fails - as soon as I posted it occurred to me that maybe the example I was using was incorrect (at least in MVC 5). I’m returning a type of ContentResult from the controller and instead of returning new SchedulerAjaxData(myJson), I needed to return a type of Content, making sure to set the MIME type to “application/json” – i.e.

return Content(myJson,“application/json”);

The corrected controller code is below.

public ContentResult Data()
{

List<blsp_GetCurrentCoursesScheduled_Result> CurrentScheduledCourses = db.blsp_GetCurrentCoursesScheduled().ToList();

List ScheduledCourses = new List();

foreach (blsp_GetCurrentCoursesScheduled_Result ScheduledCourse in CurrentScheduledCourses)
{
CourseCalendarEvent newCourse = new CourseCalendarEvent();
newCourse.id = ScheduledCourse.CourseScheduleID;
newCourse.text = ScheduledCourse.SessionName;
newCourse.start_date = ScheduledCourse.StartDate.ToString(“MM/dd/yyyy HH:mm:ss”);
int CourseHours = 2;
newCourse.end_date = ScheduledCourse.StartDate.AddHours(CourseHours).ToString(“MM/dd/yyyy HH:mm:ss”);
ScheduledCourses.Add(newCourse);
}

string myJson = JsonConvert.SerializeObject(ScheduledCourses);

return Content(myJson,“application/json”); // <------
}

Hello,
your json seems valid and does not throws an error if i try to load into the plain example with js api.
I’ve noticed one thing you may want to fix in the data format:

scheduler.Config.api_date = "%m/%d/%Y &H:%i:%s";

-> scheduler.Config.api_date = "%m/%d/%Y %H:%i:%s";// note &H -> %H
Apart from this, i see nothing wrong. If can you provide a small demo with a static data that will reproduce the error?