Javascript 无法读取属性';黑斯廷姆';未定义的

Javascript 无法读取属性';黑斯廷姆';未定义的,javascript,jquery,laravel,fullcalendar,laravel-5.1,Javascript,Jquery,Laravel,Fullcalendar,Laravel 5.1,我正在使用FullCalendar在日历上显示员工工作时间 我通过ajax调用来拉取事件,如下所示: "events": function(start, end, timezone, callback) { //create the data to be sent var objectToSend = { "start_date": start.format("YYYY-MM-DD"), "finish_date": end.format("YYYY-MM-DD"),

我正在使用FullCalendar在日历上显示员工工作时间

我通过ajax调用来拉取事件,如下所示:

"events": function(start, end, timezone, callback) {

  //create the data to be sent
  var objectToSend = {
    "start_date": start.format("YYYY-MM-DD"),
    "finish_date": end.format("YYYY-MM-DD"),
  };

  //craft and make the request
  $.ajax({
    url: 'calendar/test',
    data: objectToSend,
    type: 'POST',
    cache: false
  }).done(function(data) {
    //on success call `callback` with the data
    callback(data)
  })
}
这工作得非常好,但是我在控制台中看到一个错误“UncaughtTypeError:无法读取未定义的属性'Hastinme',这是来自
fullcalendar.min.js:6

我的JavaScript不是很流利,但我的搜索结果表明,我要么没有提供,要么没有提供

据我所知,我提供了所有正确的数据。生成数据的函数如下所示:

public function test(Request $request) {
  $start_date = Input::get('start_date');
  $finish_date = Input::get('finish_date');

  $shifts = Roster::whereBetween('date', array($start_date, $finish_date)) - > get();

  foreach($shifts as $shift) {
    $start = $shift - > date.
    ' '.$shift - > start_time;
    $finish = $shift - > date.
    ' '.$shift - > finish_time;

    $events[] = array(
      'title' => $shift - > staff - > first_name,
      'start' => Carbon::createFromFormat('Y-m-d H:i:s', $start) - > toDateTimeString(),
      'end' => Carbon::createFromFormat('Y-m-d H:i:s', $finish) - > toDateTimeString(),
      'id' => $shift - > id,
      'allDay' => false
    );
  }

  return json_encode($events);
}
哪些产出:

[{"title":"Gemma","start":"2016-02-01 18:00:00","end":"2016-02-01 22:00:00","id":1,"allDay":false},
{"title":"Gemma","start":"2016-01-26 18:00:00","end":"2016-01-26 22:00:00","id":49,"allDay":false}]
谁能看出我做错了什么?我只是想用它来呈现给定月份的事件

编辑:控制台的输出。日志(数据)

它打印出:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
打开这个,我得到:

allDay: false
end: "2016-02-01 22:00:00"
id: 1
start: "2016-02-01 18:00:00"
title: "Gemma"
0:对象

打开这个,我得到:

allDay: false
end: "2016-02-01 22:00:00"
id: 1
start: "2016-02-01 18:00:00"
title: "Gemma"

似乎您给了
fullCalendar
错误的事件参数

首先尝试手动渲染一些事件

events: [{
  title: 'event1',
  start: '2010-01-01'
}, {
  title: 'event2',
  start: '2010-01-05',
  end: '2010-01-07'
}, {
  title: 'event3',
  start: '2010-01-09T12:30:00',
  allDay: false // will make the time show
}]

之后,确保您的事件与fullCalendar期望的参数匹配。

我无法找出上面的代码出了什么问题,但我通过使用JSON提要来解决:

events: {
            url: 'calendar/test',
            error: function() 
            {
                alert("error");
            },
            success: function()
            {
                console.log("successfully loaded");
            }
        }

我得到了这个bug,具有以下功能

var postToServerAjax = function(event, delta, revertFunc)
    {
      $.post('/url', {event: event}, function(data)
      {

      }, 'json').fail(function()
      {
        revertFunc();
        alert('We got an error.');
      });
    };

我发现这是因为我试图将事件传递给post()函数。不管我是否更改了名称,只要我传递了它,我认为它试图序列化它,结果导致了那个错误。现在我手动指定和对象,在这里我“克隆”了相关的id,开始和结束,因为我不需要任何其他东西

在responseajax中使用:
JSON.parse(数据)

show
callback
function..@AndriyIvaneyko我只是想了解一下,不知道回调函数在哪里?除了以XML形式提供响应之外,我以JSON形式提供响应。好的,尝试将
回调(数据)
替换为
回调(数据[0])
中调用callback之前,能否提供console.log(数据)
funciton@AndriyIvaneyko刚刚尝试过,我也遇到了同样的错误。我在手动渲染之前成功地渲染了它们,正是在我实现这一点的时候,我开始遇到麻烦。手动提供输出也可以正常工作,即
[{“title”:“Gemma”,“start”:“2016-02-01 18:00:00”,“end”:“2016-02-01 22:00:00”,“id”:1,“allDay”:false}]
显示事件成功。确保json_encode为您提供了正确的json格式。尝试使用jQuery.parseJSON()进行检查,由于某些原因,fullCalendar不喜欢您的数据格式为start param或end。如何使用
jQuery.parseJSON()
?输出:
[{“title”:“Gemma”,“start”:“2016-02-01 18:00:00”,“end”:“2016-02-01 22:00:00”,“id”:1,“allDay”:false},{“title”:“Gemma”,“start”:“2016-01-26 18:00:00”,“end”:“2016-01-26 22:00:00”,“id”:49,“全天”:false}];
fullCalendar
应该能够解析事件,确保定义了
callback()
函数,并返回
JSON.parse(data)
,而不是
data