我玩弄了jQuery Week Calendar,我试图得到这个工作,但我想不通这是为什么抛出一个错误。这两种返回JSON对象的方式有什么区别?
日历有一个返回事件与填充本身的列表的方法。
的方法(使用预先设定的事件用于演示目的)是这样的:
function getEventData() {
var year = new Date().getFullYear();
var month = new Date().getMonth();
var day = new Date().getDate();
return {
events : [
{
"id":1,
"start": new Date(year, month, day, 12),
"end": new Date(year, month, day, 13, 30),
"title":"Lunch with Mike"
},
...
{
"id":6,
"start": new Date(year, month, day, 10),
"end": new Date(year, month, day, 11),
"title":"I am read-only",
readOnly : true
}
]
};
}
我改变它,以便它使用一个jQuery到达另一个网页,将返回真正的日期列表。为了测试,我保留了相同的测试数据,以查看帖子是否正确完成。
的方法调用的页面,它会在responseText
财产退货。
{
events : [
{
'id':1,
'start': new Date(2010, 2, 22, 12),
'end': new Date(2010, 2, 22, 13, 30),
'title':'Lunch with Mike'
},
...
{
'id':6,
'start': new Date(2010, 2, 28, 10),
'end': new Date(2010, 2, 28, 11),
'title':'I am read-only',
readOnly : true
}
]
}
这两种方法我有什么不同吗?这两个对象看起来和我完全一样,除了第二个使用'而不是',因为它是通过C#编写的,并且它不使用年/月/日变量。
问题是第二个方法抛出一个错误,说“G是未定义”,是否有任何理由jQuery不会喜欢我回来的JSON对象?
编辑:我想我找到了错误的来源。方法有一个if语句是这样的:
if (typeof options.data == 'string') {
if (options.loading) options.loading(true);
var jsonOptions = {};
jsonOptions[options.startParam || 'start'] = Math.round(weekStartDate.getTime()/1000);
jsonOptions[options.endParam || 'end'] = Math.round(weekEndDate.getTime()/1000);
$.getJSON(options.data, jsonOptions, function(data) {
self._renderEvents(data, $weekDayColumns);
if (options.loading) options.loading(false);
});
}
else if ($.isFunction(options.data)) {
options.data(weekStartDate, weekEndDate,
function(data) {
self._renderEvents(data, $weekDayColumns);
});
}
当只是在输出getEventData()(第一种方式)的JSON对象它击中else语句因为它被认为是一个函数(我猜),但是当我做ajax GET时,它被认为是一个字符串并进入if。
反正有没有得到这个公认的功能?我尝试在大括号中包装返回值,将dataType更改为脚本并使用eval()将结果作为函数进行投射,但似乎没有任何效果。
害怕没有工作,它似乎使它失败默默。 – Brandon 2010-02-22 22:26:16