Показать сообщение отдельно
  #1 (permalink)  
Старый 01.07.2016, 20:08
Интересующийся
Отправить личное сообщение для nina_ Посмотреть профиль Найти все сообщения от nina_
 
Регистрация: 26.06.2016
Сообщений: 29

BeforeShowDate срабатывает перед $.ajax
Добрый день

С помощью следующего кода планировала выбрать дату на календаре
(datepicker UI) -> записать дату в бд -> и соответственного тут же отметить ее на календаре без перезагрузки страницы.
var disabledDays = <?php echo $json;?>;
    jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input',
            beforeShowDay: function(date) {
                date = $.datepicker.formatDate('dd/mm/yy', date);
                for (i = 0; i < disabledDays.length; i++) {
                    if($.inArray(date,disabledDays) != -1) {
                        return [true, 'ui-state-active', 'available'];
                    }                                            
                }
                return [true];
            },
            onSelect: function(dateText, inst) {
                $.ajax({
                    type: 'POST',
                    url: "process.php",
                    dataType: "json",
                    data: {input:dateText},
                    success: function(data) {
                        console.log("Done");
                    }
                });
            }

        });
    });

В итоге дата в бд записывается, но чтобы она отметилась на календаре нужно перезагрузить страницу, вероятно, beforeShowDay срабатывает
раньше $.ajax?

Попробовала убрать асинхронность и обновить календарь после выполнения запроса, но это наверное не в ту степь?
Подскажите как получить отмеченные даты после добавления в бд
без перезагрузки страницы?
var disabledDays = <?php echo $json;?>;
    jQuery(document).ready(function() {
        $( "#datepicker").datepicker({
            dateFormat: 'dd/mm/yy',
            altField: '#input',
            onSelect: function(dateText, inst) {
                $.ajax({
                    async: false,
                    type: 'POST',
                    url: "process.php",
                    dataType: "json",
                    data: {input:dateText},
                    success: function(data) {
                        $('#datepicker').datepicker('refresh');
                    }
                });
            },
            beforeShowDay: function(date) {  
                date = $.datepicker.formatDate('dd/mm/yy', date);
                for (i = 0; i < disabledDays.length; i++) { 
                    if($.inArray(date,disabledDays) != -1) {                     
                        return [true, 'ui-state-active', 'available']; 
                                                                       
                    }                                              
                }
                return [true];
            }
        });
    });
Ответить с цитированием