0

我在我的项目中使用周历(https://github.com/themouette/jquery-week-calendar/wiki)并且语言是 ruby​​ on rails 但我的 ruby​​ 代码中的 JSON 对象存在问题,该对象将 JSON 数据返回到 weekcalendar .js 文件。如何将 JSON 对象的 JSON 编码为 2d 数组到 JSON 数组格式?

请参阅此代码:

data : function(start_at,end_at,callback) { 
    $.post('/events', { 

     },
        function(result){ \\this function is a receive JSON object from ruby
        console.log(data); 
        getEventData(result)
     },'json');        
  }

这是 console.log(data) 的 JSON 对象:

[Object { created_at="2013-03-12T11:08:34Z",  end_at="2013-03-12T00:00:00Z",  event_description="wqe",more...}, Object { created_at="2013-03-12T11:08:41Z",  end_at="2013-03-12T00:00:00Z",  event_description="wqe",  more...}, Object { created_at="2013-03-12T11:10:26Z",  end_at="2013-03-13T00:00:00Z",  event_description="ewr",  more...}, Object { created_at="2013-03-12T11:15:39Z",  id=4,  updated_at="2013-03-12T11:15:39Z"}, Object { created_at="2013-03-12T11:16:45Z",  id=5,  updated_at="2013-03-12T11:16:45Z"}, Object { created_at="2013-03-12T11:17:21Z",  id=6,  updated_at="2013-03-12T11:17:21Z"}, Object { created_at="2013-03-13T05:13:39Z",  id=7,  updated_at="2013-03-13T05:13:39Z"}, Object { created_at="2013-03-14T08:11:50Z",  id=8, ...}] 

好的,我有 JSON 对象,现在函数 getEventData(data),我做 jQuery.parseJSON(data); 用于编码 JSON 对象但没有结果。

请看这个:

function getEventData(data) {
      var eventData = jQuery.parseJSON(data);
      console.log(eventData);
      /*return {
         events:[
            {
               "id":eventData.id,
               "start": eventData.start,
               "end": eventData.end,
               "title": eventData.name,

            }
         ]
      };*/

结果 console.log(eventData); 是一个空值。

现在好了。如何将 JSON 对象的 JSON 编码为 2d 数组到 JSON 数组格式以返回有效。感谢您的每一个想法,并为我的英语能力感到抱歉。

4

1 回答 1

1

您的第一个功能也有错误。你调用 console.log(data) 然后你用一个可变的结果调用你的函数。

我相信您不需要在其上使用 jQuery.parseJSON,因为它已经是一个对象。这是文档中关于 parseJSON 的说明:

Description: Takes a well-formed JSON string and returns the resulting JavaScript object.

您的数据已经是一个已解析的 json(对象),因此您可以直接使用 json 格式而无需对其进行解析。

所以你的代码是:

data : function(start_at,end_at,callback) { 
  $.post('/events', { 

  },
    function(data){ \\this function is a receive JSON object from ruby
    console.log(data); 
    getEventData(data)
  },'json');        
}

function getEventData(data) {
  var events = new Array();
  $.each( data, function( key, value ) {
    events.push({
           "id":value.id,
           "start": value.start,
           "end": value.end,
           "title": value.name,

        });
  });
  return events;
}
于 2013-03-15T12:00:00.353 回答