Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 这两种返回JSON对象的方法有什么区别?_C#_Asp.net_Jquery_Ajax_Json - Fatal编程技术网

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。另外,原始版本使用的是
新日期(…)
对于一个值。无论是否良好实践,问题仍然是它为什么停止工作。