2013-12-04 4 views
0

Я пытаюсь добавить некоторые события в fulllcalendar на свою веб-страницу. Но он извлекает значения из базы данных, но не показывает результаты в календаре.jQuery fullcalendar плагин, не отображающий события, полученные из базы данных

PHP

$q = "SELECT * FROM `events` ORDER BY `id`"; 
$result = $mysqli->query($q) or die(mysql_error()); 
echo json_encode(mysqli_fetch_array($result)); 

JS

var calendar = $('#calendar').fullCalendar({ 
    editable: true, 
    header: { 
     left: 'prev,next', 
     center: 'title', 
     right: 'month,agendaWeek,agendaDay' 
    }, 
    events: "http://localhost/xxx/events.php", 
    eventRender: function(event, element, view) { 
     if (event.allDay === 'true') { 
      event.allDay = true; 
     } else { 
      event.allDay = false; 
     } 
    }, 
    selectable: true, 
    selectHelper: true, 
    select: function(start, end, allDay) { 
     var title = prompt('Event Title:'); 
     var url = prompt('Type Event url, if exits:'); 
     if (title) { 
      var start = $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"); 
      var end = $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss"); 
      $.ajax({ 
       url: 'http://localhost/xxx/add_events.php', 
       data: 'title='+ title+'&start='+ start +'&end='+ end +'&url='+ url , 
       type: "POST", 
       success: function(json) { 
        alert('Added Successfully'); 
       } 
      }); 
      calendar.fullCalendar('renderEvent', 
       { 
        title: title, 
        start: start, 
        end: end, 
        allDay: allDay 
       }, 
       true // make the event "stick" 
      ); 
     } 
     calendar.fullCalendar('unselect'); 
    }, 
    editable: true, 
    eventDrop: function(event, delta) { 
     var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
     var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
     $.ajax({ 
      url: 'http://localhost/xxx/update_events.php', 
      data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
      type: "POST", 
      success: function(json) { 
       alert("Updated Successfully"); 
      } 
     }); 
    }, 
    eventResize: function(event) { 
     var start = $.fullCalendar.formatDate(event.start, "yyyy-MM-dd HH:mm:ss"); 
     var end = $.fullCalendar.formatDate(event.end, "yyyy-MM-dd HH:mm:ss"); 
     $.ajax({ 
      url: 'http://localhost/xxx/update_events.php', 
      data: 'title='+ event.title+'&start='+ start +'&end='+ end +'&id='+ event.id , 
      type: "POST", 
      success: function(json) { 
       alert("Updated Successfully"); 
      } 
     }); 

JSON

{"0":"1","id":"1","1":"1","userid":"1","2":"sample","title":"sample","3":"2013-12-03 08:52:20","start":"2013-12-03 08:52:20","4":"2013-12-05 08:52:20","end":"2013-12-05 08:52:20","5":"0","allday":"0"} 

Пожалуйста, кто поможет мне решить эту проблему ...

ответ

0

Судя из вашего JSON, вы проблема заключается в том, что fullCalendar jQuer y плагин требует, чтобы все значения datetime были преобразованы в метку времени UNIX.

Это может быть помощь datetime - convert date to unixtime php - Stack Overflow

+0

Спасибо за ваш быстрый ответ. Теперь я преобразовал 'date' в' unixtimestamp', '' JSON''' {«userid»: «1», «title»: «sample», «start»: 1386057140, «end»: 1386229940, «allday»: «0»} 'все еще не показывает событие – james

+0

Может быть, случаи некоторых ваших параметров не соответствуют [объекту события] (http://arshaw.com/fullcalendar/docs/event_data/Event_Object/). например измените «allday» на «allDay», и если вы хотите его использовать, не используйте «0/1», а вместо этого используйте true/false без двойных комментариев. «userid» также не является частью объекта события, так что это может вызвать некоторые проблемы. Надеюсь, это поможет. – JRAnderson

+0

Извините, что не работает. Я изменил 'allday' на' allDay' и 'userid' на' id', а также я попытался удалить 'allDay', но он не работает – james

0

Я предполагаю, я наконец-то взломал проблему. По какой-то причине полный каландр отображает события, если события передаются внутри массива, так что это так.

Array[ 
    Jason Objects {},{},{} as many as you want 
] 

для меня приведенный ниже код работает как шарм.

$data = array(
    array(
     'id' => $event->_id 
     'title' => $event->eventName, 
     'start' => date($event->start) 
    ) 
); 
return Response::json($data); 

И КСТАТИ ваш первый объект JSON является правильным просто изменить идентификатор пользователя, чтобы идентификатор и передать его через массив я думаю, он должен работать.

Надеюсь, это поможет, счастливое кодирование :)

Смежные вопросы