C# 这两种返回JSON对象的方法有什么区别?
我正在玩游戏,并试图让这个工作,但我不明白为什么这是抛出一个错误 日历有一个方法,返回一个事件列表以填充自己 该方法(使用预设事件进行演示)如下所示:C# 这两种返回JSON对象的方法有什么区别?,c#,asp.net,jquery,ajax,json,C#,Asp.net,Jquery,Ajax,Json,我正在玩游戏,并试图让这个工作,但我不明白为什么这是抛出一个错误 日历有一个方法,返回一个事件列表以填充自己 该方法(使用预设事件进行演示)如下所示: function getEventData() { var year = new Date().getFullYear(); var month = new Date().getMonth(); var day = new Date().getDate(); return { e
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
}
]
};
}
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);
});
}
我对其进行了更改,以便它使用jQuery GET访问另一个页面,该页面将返回一个真实日期列表。为了测试,我保留了相同的测试数据,只是为了看看帖子是否正确完成
该方法将调用该页,并在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语句,如下所示:
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
}
]
};
}
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
还有什么方法可以将其识别为函数吗?我尝试用大括号包装返回,将数据类型更改为script,并使用eval()将结果转换为函数,但这一切似乎都不起作用。您也尝试过将事件括在引号中吗
“事件”:[…您也尝试过用引号括起事件吗
“事件”:[…将您的回复文本放入并查看问题所在 还要注意的是,将
新日期(2010,2,28,10)
直接输出到文本中被认为是不好的做法,而是使用真实值,然后在客户端用JS解析它们。(我认为这是最明显的错误,只要不使用eval
解析JSON字符串:)
自jQuery 1.4.0以来,该库对JSON的格式非常严格(您的JSON文本忽略了键的引号)将响应文本放入并查看问题所在 还要注意的是,将
新日期(2010,2,28,10)
直接输出到文本中被认为是不好的做法,而是使用真实值,然后在客户端用JS解析它们。(我认为这是最明显的错误,只要不使用eval
解析JSON字符串:)
自jQuery 1.4.0以来,该库对JSON的格式(您的JSON文本缺少键的引号)非常严格。在谷歌搜索后,我遇到了与我遇到的问题完全相同的问题 我认为主要的问题是DateTimes的格式不正确。返回events JSON对象直接正确地转换了日期,但我的ajax调用返回的是新日期(2010,02,23,12)与times一样。它导致它无声地失败。将datetimes更改为类似于
2010-02-23T12:15:00.000+10:00的值似乎已经修复了它
然而,该用户似乎对事件有错误:[
破坏JSON。我把它放在ajax调用中,它仍然可以正常工作。通过谷歌搜索后,我遇到了与我遇到的问题完全相同的问题
我认为主要的问题是DateTimes的格式不正确。返回events JSON对象直接正确地转换了日期,但我的ajax调用返回的是新日期(2010,02,23,12)
与times一样。它导致它无声地失败。将datetimes更改为类似于2010-02-23T12:15:00.000+10:00的值似乎已经修复了它
然而,该用户似乎对事件有错误:[
破坏JSON。我在ajax调用中留下了它,它仍然可以正常工作。Brandon在另一条评论中指出,他使用的是1.3.2。另外,原始版本使用的是新日期(…)
对于一个值。无论是否良好实践,问题仍然是它为什么停止工作。布兰登在另一篇评论中指出,他使用的是1.3.2。另外,原始版本使用的是新日期(…)
对于一个值。无论是否良好实践,问题仍然是它为什么停止工作。