Я настраиваю приложение с помощью FullCalendar ( http://arshaw.com/fullcalendar/ ), которое позволит пользователю видеть информацию о планировании клиентов, а также планировать клиентов через интерфейс управления.
Я хочу использовать базу данных MySQL для заполнения массива, а затем передать этот массив в виде канала JSON в FullCalendar на HTML-странице. В идеале, информация о клиенте будет отображаться на странице HTML. Однако, хотя мой канал JSON передается, на моем FullCalendar нет событий.
Пример передачи JSON:
[{"title":"Watson","start":"1333976400","end":"1333980000","allDay":false}]
Я довольно новичок в этих языках, и я не удивлюсь, если эта ошибка окажется простой.
Я был бы глубоко признателен за любую помощь или понимание того, что эти события появятся. Когда я вручную подаю массив в FullCalendar, он показывает события, но до сих пор мой канал JSON не показывал никакой информации.
спасибо
Для справки: HTML:
$(document).ready(function() { $('#calendar').fullCalendar({ events: '/json-events.php' }); });
PHP:
while ($record = mysql_fetch_array($result)) { $event_array[] = array( 'id' => $record['id'], 'title' => $record['title'], 'start' => $record['start_date'], 'end' => $record['end_date'], 'allDay' => false ); } echo json_encode($event_array);
Таким образом, проблема для тех поисковиков, которые приходят после меня, заключалась в том, что у моего PHP-файла были HTML-заголовки и теги тела. Я PHP noob, поэтому я не знал, что это не сработает. Чтобы FullCalendar отображал канал JSON, он должен иметь только PHP-код, а не HTML. JSONLint.com был неоценим в том, чтобы понять это.
Я установил быстрый пример и не имел никаких проблем с тем, чтобы это работало:
PHP:
<?php $record[0]["title"]="Test 1"; $record[1]["title"]="Test 2"; $record[2]["title"]="Test 3"; $record[0]["start_date"]="1333976400"; $record[1]["start_date"]="1333976401"; $record[2]["start_date"]="1333976402"; $record[0]["end_date"]="1333980000"; $record[1]["end_date"]="1333980001"; $record[2]["end_date"]="1333980002"; $record[0]["id"]="1"; $record[1]["id"]="2"; $record[2]["id"]="3"; for ($i=0; $i<3; $i++) { $event_array[] = array( 'id' => $record[$i]['id'], 'title' => $record[$i]['title'], 'start' => $record[$i]['start_date'], 'end' => $record[$i]['end_date'], 'allDay' => false ); } echo json_encode($event_array); exit; ?>
HTML:
events: '/events.php'
Пример вывода из скрипта PHP:
[{"id":"1","title":"Test 1","start":"1333976400","end":"1333980000","allDay":false},{"id":"2","title":"Test 2","start":"1333976401","end":"1333980001","allDay":false},{"id":"3","title":"Test 3","start":"1333976402","end":"1333980002","allDay":false}]
Поэтому, учитывая, что вышеизложенное работает для меня, и это действительно не отличается от того, что у вас есть выше, вам может потребоваться проверить, правильно ли вызывается PHP-скрипт. Проверьте консоль Javascript в Mozilla Firefox или Google Chrome, чтобы узнать, есть ли какие-либо ошибки, возникающие при попытке загрузить Fullcalendar. Проверьте свои журналы доступа к веб-серверу / записи ошибок для любого упоминания скрипта PHP.
events: '/json-events.php'
должны быть либо
events: './json-events.php'
или
events: 'json-events.php'
Позвольте мне знать, если это помогает…
РЕДАКТИРОВАТЬ
Я также заметил, что в Json, что вы получаете, в строке нет идентификатора. Возможно, что-то происходит между именем вашего идентификатора в DB по сравнению с именем, используемым вами в массиве. Проверьте это и посмотрите, что происходит, потому что это одно из свойств, необходимых для передачи события.
РЕДАКТИРОВАТЬ
Попробуйте удалить [] из $ event_array [] и посмотреть, что произойдет … Если это не сработает, я упал … извините