Полный календарь не показывает события из базы данных в laravel

#ajax #laravel #fullcalendar

#ajax #laravel #полный календарь

Вопрос:

Я пытаюсь отобразить события из базы данных в календаре, но я получаю

alert('failed') вызывайте каждый раз.

Пожалуйста, кто-нибудь, помогите мне решить эту проблему. Я застрял здесь.

вот код моего скрипта:

 $.ajax({
  url:'events',
  type: "GET",
  cache: false,
  datatype: 'json',
  success: function(data){
    alert('Hello');
    $.each(data, function(index, val){
        events.push({
          title: val.name,
          start_date: val.start_date,
          end_date: val.end_date,
          start_time: val.start_time,
          end_time: val.end_time,
          location:val.location,
          description: val.description,
          timezone:val.timezone,
          alldDay: val.isFullDay
        });
    })
    GenerateCalendar(events);
  },
  error : function(error){
    alert('Failed');
  }
});

function GenerateCalendar(events){
  $('#calendar').fullCalendar('destroy');
  $('#calendar').fullCalendar({
    contentHeight: 400,
    defaultDate: new Date(),
    timeFormat:'h(:mm)a',
    header: {
        left: 'prev,next today',
        center: 'title',
        right: 'month,agendaWeek,agendaDay'
    },
    eventLimit: true,
    eventColor: '#378006',
    events: events
  });

}
  

Функция контроллера:

 public function getEvents()
{
  $events = Event::all();
  return response()->json(['data'=> $events])->getData();
}
  

Заранее спасибо.

Комментарии:

1. не могли бы вы зарегистрировать свой function(error) error параметр и просмотреть сообщение? что-то вроде console.log(error); .

2. где я должен разместить эту консоль. метод ведения журнала?

3. внутри вашего function(error) , после добавления, попробуйте открыть консоль браузера (F12), затем обновите страницу. по крайней мере, мы получим сообщение об ошибке, чтобы проверить, в чем была проблема.

4. также может быть полезно открыть вкладку Сеть в инструментах вашего браузера, обновить страницу и поискать вызов /events . Затем посмотрите на ответ — код состояния будет показан немедленно, а затем, если вы нажмете на этот вызов ajax и перейдете на вкладку Ответа, он покажет фактические данные, которые вернулись с сервера — возможно, произошла ошибка. Если вы все еще не уверены, что делать после того, как вы просмотрели эти фрагменты информации, пожалуйста, вставьте их сюда, чтобы мы могли помочь вам их интерпретировать.

Ответ №1:

Я вижу, что у вашего события есть атрибуты, start_date, end_date, start_time, end_time я ничего не видел об этом в документации по полному календарю. насколько я знаю, fullcalendar ожидает, что у событий будет вызываемый атрибут start , который является обязательным, и вызываемый необязательный end

Из документации по полному календарю:

start — дата / время начала события. Требуется. Ввод на мгновение, например, строка ISO8601. Во всем API это станет объектом real Moment.

Если вы хотите использовать JSON-канал для получения событий, нет необходимости выполнять свой собственный ajax-вызов. вы можете использовать свойство EventSource, и FullCalendar обработает выборку за вас

Комментарии:

1. все это верно, но это не привело бы к ошибке AJAX, о которой сообщается

2. да, Джон, ты прав, но могу ли я каким-либо образом добавить собственные пользовательские поля, подобные приведенным выше, чтобы я мог сохранять и извлекать их из базы данных?

3. @SohaIbAhmEd да, вы можете добавить столько пользовательских полей, сколько захотите. Полный календарь не удалит их. Но поле start обязательно. Таким образом, даже если ваш ajax-запрос не завершится ошибкой. календарь по-прежнему не будет отображать никаких событий, поскольку у них нет свойства start, необходимого календарю

4. можете ли вы указать точное место, куда я могу их добавить?

5. вы можете добавить пользовательские поля в любом месте вашего объекта event. просто убедитесь, что событие также содержит обязательные поля