Я в замешательстве, что может быть подходящим названием для этого вопроса, в любом случае позвольте мне объяснить, в чем моя проблема. Я в настоящее время использую плагин CLNDR.js и что я пытаюсь сделать, это отобразить события в моем календаре, используя данные (дни рождения) из базы данных. Результат в моем php-запросе предварительно отформатирован.
Мой PHP это:
<?php
require 'connection.php';
error_reporting(0);
session_start();
$currentYear = date("Y");
$query = mysqli_query($con,"SELECT * FROM table2");
$count = mysqli_num_rows($query);
if($count < 1){ }else{
while($row = mysqli_fetch_array($query)){
echo ' { date: \'' .$currentYear. '-' .$row['BirthMonth']. '-' .$row['BirthDay']. '\', title: \'' . $row['LastName'] . ' birthday \' }, ' ;
}
}
?>
и результат, который у меня есть, таков:
{ date: '2015-5-29', title: 'Williams birthday' }, { date: '2015-5-29', title: 'Marcus birthday' }, { date: '2015-1-19', title: 'Spear birthday' },
и мои коды jquery для CLNDR.js это:
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: 'POST',
url: 'function/serverdays.php',
dataType: 'text',
success: function(data) {
var year = moment().year();
var newyear = moment(year + '-01-01').format('YYYY-MM-DD');
var valentine = moment(year + '-02-14').format('YYYY-MM-DD');
var allsaints = moment(year + '-11-01').format('YYYY-MM-DD');
var allsouls = moment(year + '-11-02').format('YYYY-MM-DD');
var christmas = moment(year + '-12-25').format('YYYY-MM-DD');
var lastday = moment(year + '-12-31').format('YYYY-MM-DD');
var events = [
data,
{ date: newyear, title: 'NEW YEAR'},
{ date: valentine, title: 'VALENTINE\'S DAY'},
{ date: allsaints, title: 'ALL SAINTS DAY'},
{ date: allsouls, title: 'ALL SOULS DAY'},
{ date: christmas, title: 'CHRISTMAS DAY'},
{ date: lastday, title: 'LAST DAY OF THE YEAR'},
];
$('#mini-clndr').clndr({
template: $('#calendar-template').html(),
events: events,
constraints: {
startDate: moment(year + '-01-01'),
endDate: moment(year + '-12-31')
},
clickEvents: {
click: function(target) {
if(target.events.length) {
var daysContainer = $('#mini-clndr').find('.days-container');
daysContainer.toggleClass('show-events', true);
$('#mini-clndr').find('.x-button').click( function() {
daysContainer.toggleClass('show-events', false);
});
}
}
},
adjacentDaysChangeMonth: true,
forceSixRows: true
});
},
error:function (xhr, ajaxOptions, thrownError){
alert(thrownError);
}
});
});
</script>
поэтому я предполагаю, что результат выглядит так:
var events = [
{ date: '2015-5-29', title: 'Williams birthday' },
{ date: '2015-5-29', title: 'Marcus birthday' },
{ date: '2015-1-19', title: 'Spear birthday' },
{ date: newyear, title: 'NEW YEAR'},
{ date: valentine, title: 'VALENTINE\'S DAY'},
{ date: allsaints, title: 'ALL SAINTS DAY'},
{ date: allsouls, title: 'ALL SOULS DAY'},
{ date: christmas, title: 'CHRISTMAS DAY'},
{ date: lastday, title: 'LAST DAY OF THE YEAR'},
];
мои HTML-теги
<div id='mini-clndr'></div>
<script id="calendar-template" type="text/template">
<div class="controls">
<div class="clndr-previous-button">‹</div><div class="month"><%= month %></div><div class="clndr-next-button">›</div>
</div>
<div class="days-container">
<div class="days">
<div class="headers">
<% _.each(daysOfTheWeek, function(day) { %><div class="day-header"><%= day %></div><% }); %>
</div>
<% _.each(days, function(day) { %><div class="<%= day.classes %>" id="<%= day.id %>"><%= day.day %></div><% }); %>
</div>
<div class="events">
<div class="headers">
<div class="x-button">x</div>
<div class="event-header">EVENTS</div>
</div>
<div class="events-list">
<% _.each(eventsThisMonth, function(event) { %>
<div class="event">
<div class="event-item-name"><%= event.date %> : <%= event.title %></div>
<div class="event-item-location"><%= event.location %></div>
</div>
<% }); %>
</div>
</div>
</div>
</script>
но я получаю ошибку из консоли, указывающей на плагин
Uncaught TypeError: Невозможно прочитать свойство ‘format’ из неопределенного
хотя я не так хорош в jquery, и у меня возникают проблемы с поиском поддержки, использующей ajax для ‘clndr.js’, так как об этом мало сообщений. Какое возможное решение для этого?
Задача ещё не решена.
Других решений пока нет …