Я у себя делала примерно так:
var forbiddenDates = {};
$.ajax({
url: '/getForbiddenDates/',
type: 'post',
data: data,
cache: false,
success: function (response) {
if(response.result) {
var minDay = '+' + response.data.minDay + 'd';
forbiddenDates = response.data.forbiddenDates;
$("#datepicker").datepicker("option", "minDate", minDay).val('').datepicker("refresh");
}
else {
alert(response.data);
}
}
});
В beforeShowDay:
function(d) {
var dat = $.datepicker.formatDate('dd.mm.yy', d) + '';
if (array_key_exists(dat, forbiddenDates)) {
var tip = 'Извините, на эту дату заказы не принимаются';
if(forbiddenDates[dat] != '') {
tip = forbiddenDates[dat];
}
return [true, 'ui-datepicker-unselectable ui-state-disabled', tip];
}
else {
return [true, ''];
}
}
Сервер возвращал json, даты записывались в forbiddenDates, после чего datepicker обязательно обновлялся.
UPD: forbiddenDates - json вида (тут еще передавались комментариии к каждому дню, у вас все проще будет):
"forbiddenDates":{"01.05.2015":"Праздничный день", "02.05.2015":"И сегодня не работаем", "03.05.2015":"Тоже отдыхаем"}