У меня есть полный календарь, в котором я могу фильтровать результаты событий на основе выбранного ввода (несколько):
<select id="ids" name="ids[]" class="form-control" multiple>
<option value="1" selected> Option 1</option>
<option value="2"> Option 2</option>
<option value="3"> Option 3</option>
</select>
<button type="button" id="btn-filter">Apply</button>
Представление по умолчанию с выбранным ВАРИАНТОМ 1. При загрузке страницы fullcalendar может правильно получить мой выбор.
Если я выберу другой вариант (например, ВАРИАНТ 2) и нажму фильтр кнопки, полное обновление календаря, но все же пройду только ВАРИАНТ 1 (я вижу его в консоли отладки Firefox):
КОНСОЛЬ ФАЙРЕФОКС:
array_ids[]: 1
start: 2019-06-01T00:00:00
end: 2019-07-01T00:00:00
Это фрагмент кода fullcalendar
events: {
url: './get-events.php',
cache: false,
type: 'POST',
data: {
array_ids: $("#ids").val()
},
error: function () {
alert('there was an error while fetching events!');
},
},
Это кнопка для обновления календаря:
$('#btn-filter').on('click', function(e) {
e.preventDefault();
$('#calendar').fullCalendar('refetchEvents');
});
Кажется, что fullcalendar хранит только первое значение при загрузке страницы: array_ids: $("#ids").val()
РЕДАКТИРОВАТЬ: хорошо, я изменил таким образом:
events: function (start, end, timezone, callback) {
$.ajax({
url: './get-events.php',
data: { "array_ids": $("#ids").val(), "start": moment(start).format(), "end": moment(end).format() },
cache: false,
type: 'POST',
success: function (data) {
$('#calendar').fullCalendar('rerenderEvents');
}
});
},
Теперь все параметры выбора передаются... но.... календарь перестает отображать результат... остается пустым.... но наблюдая за консолью firefox, я вижу, что данные собираются правильно.... только не отображается в полном календаре !
data
... но вы их не используете. Согласно документации, вы должны использовать предоставленную функцию обратного вызова, чтобы сообщить fullCalendar о новые события, это не происходит по волшебству.success: function (data) { callback(data); }
сработало бы в такой ситуации - person ADyson   schedule 11.07.2019success: function (data) { callback(JSON.parse(data)); }
, если jQuery еще не определил, что вывод из PHP - это JSON. Но в любом случае вам не нужна эта сложность, так как вы можете исправить это гораздо проще, используя мой ответ ниже. - person ADyson   schedule 11.07.2019