将事件数据传递给从Web API收到的jQuery的jQuery周日历

我使用jQuery Week Calender ,Asp.net Web API作为服务器端,Sql server作为后端。

到目前为止我根据演示完成的所有工作,但是演示有静态JSON数据,这里我需要从服务器检索数据。

几乎所有其他事情都很清楚并且工作正常,但是从服务器传递loadin事件数据并传递给日历时出现问题,这是我从服务器获得的响应。

[{"id":13,"title":"Event Name","body":"Content","start":"2012-10-16T03:30:00.00","end":"2012-10-16T06:30:00.00","typeEvnt":1},{"id":14,"title":"dfgfdg","body":"gdfgdfg","start":"2012-10-15T04:15:00.00","end":"2012-10-15T06:45:00.00","typeEvnt":1}] 

日期时间采用GMT格式,需要转换为本地时区,然后添加日历。

以下是我要将其添加到日历中的操作:

 $.ajax({ url: '/api/api/event/load', type: 'get', statusCode: { 200: function (data) { var dataString = JSON.stringify( data); callback( {events : dataString} ); }); 

但我在chrome中遇到错误说Uncaught TypeError:无法调用未定义的方法’getTime’我很确定这与Date转换有关。

在此错误之后,日历不会加载事件。

这里有几点,不清楚:

  1. DateTime服务器应将数据发送到浏览器的格式。
  2. 如何将其转换为本地时区并传递给日历。
  3. C#.net中的服务器端代码用于以所需格式格式化日期时间。

总之,我需要从服务器检索DateTime数据的方法,并将其转换为本地时区,然后将其添加到jQuery Week Calender。

任何建议或线索都会有所帮助或MVC演示。

首先,您在上面的$.ajax调用中缺少一些小括号。

另请注意,使用success:更常见success:设置而不是statusCode: { 200: …等。

查看JQuery Week Calendar站点上的演示,它期望每个事件中的开始和结束字段都有JavaScript Date对象。 JSON不会自动将这些字段转换为Date,因此您需要使用所谓的reviver函数来执行此操作。 您还希望文本以text格式返回,以便您可以使用JSON解析而不是JQuery的JSON解析器来解析它。

下面的dateReviver函数以ISO 8601日期格式解析日期,这是我所相信的。 摘自:礼貌: 如何使用Windows 8 JSON.parse将JSON文本反序列化为日期类型? :

 function dateReviver(value) { if (typeof value === 'string') { var re = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)$/ var result = re.exec(value); if (result) { return new Date(Date.UTC(+result[1], +result[2] - 1, +result[3], +result[4],+result[5], +result[6])); } } return value; } 

并且ajax函数调用JSON解析,而后者又使用dateReviver函数转换那里的任何日期字符串。

 $.ajax({ url: '/api/api/event/load', type: 'get', dataType: text, success: function(data) { var eventArray = JSON.parse(data, dateReviver); callback({events: eventArray}); } });