refetchEvents в jquery fullCalendar не работает в IE - PullRequest
0 голосов
/ 06 января 2010

Кто-нибудь еще имел эту проблему? Вот некоторый код:

$(document).ready(function() {
    $('#calendar').fullCalendar({
        editable: true,
        disableDragging: false,
        height: 400,
        weekMode: 'variable',
        defaultView: 'agendaDay',
        allDaySlot: false,
        weekends: false,
        minTime: 7,
        maxTime: 22,
        slotMinutes: 15,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        eventSources: [
        //US HOLIDAYS
        //TODO: Add entries for Alaska Day and Seward Day
                $.fullCalendar.gcalFeed('http://www.google.com/calendar/feeds/usa__en%40holiday.calendar.google.com/public/basic')
        ],
        events: function(start, end, callback) {

            $.getJSON('<%= ResolveUrl("~/TimeSheet/fetchCalEvents") %>',
            {
                start: $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"),
                end: $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss")
            },
            function(data) {
                if (data != null) {

                    var events = [];
                    $.each(data, function(i, data) {

                        //allDay = start.indexOf('T') == -1;

                        //if (allDay) {
                             //$.fullCalendar.addDays(end, -1); // make inclusive
                        //}
                        events.push({
                            id: data.ID,
                            title: data.TITLE,
                            start: new Date(parseInt(data.START.replace("/Date(", "").replace(")/", ""), 10)),
                            end: new Date(parseInt(data.END.replace("/Date(", "").replace(")/", ""), 10)),
                            allDay: false,
                            //location: entry['gd$where'][0]['valueString'],
                            //description: entry['content']['$t'],
                            //className: options.classN6ame,
                            editable: true
                        });


                    });

                    callback(events);

                } //END if (data != null)


            });

        },//........ lots more code here.


//MY FORM HEADER USED WHEN SUBMITTING A NEW CALENDAR ITEM TO THE DB:    
<% using (Ajax.BeginForm("newTimeEntry", "TimeSheet", new AjaxOptions() { UpdateTargetId = "newTimeEntry", OnComplete="timeSubmitComplete", OnSuccess = "enableTimePickers", InsertionMode = InsertionMode.Replace }, new { id = "TimeEntry" }))



//##########################################
//CALLED AFTER SUCCESSFUL TIME ENTRY SUBMISSION
//RELOADS THE CALENDAR EVENTS
function timeSubmitComplete() {
    $('#calendar').fullCalendar('refetchEvents');
}

Ответы [ 3 ]

1 голос
/ 24 мая 2011

Чтобы заставить refetchEvents работать в IE, попробуйте это:

setTimeout(function() { $('#calendar').fullCalendar('refetchEvents');},0);
0 голосов
/ 03 марта 2012

Я также столкнулся с той же проблемой в IE 9, как я решил, что я добавил временную метку к исходному файлу, откуда были извлечены события, поэтому, если мой файл был "myserver/get_calendar.php"

все, что я сделал, было 'myserver/get_calendar.php?$timestamp', это заставляет браузер чувствовать свой новый файл каждый раз, когда он пытается повторно извлечь событие, поэтому он фактически отправляет запрос на эту страницу вместо того, чтобы использовать его из кэша браузера

извините за мой английский, Надеюсь, что это удовлетворяет ответ !!! :)

0 голосов
/ 07 января 2010

Ну, конечно .... IE и его кеширование ... Я добавил следующее в запрос get для функции events. Он добавляет параметр даты, поэтому URL-адрес GET изменяет каждый вызов сервера:

events: function(start, end, callback) {

            $.getJSON('<%= ResolveUrl("~/TimeSheet/fetchCalEvents") %>',
            {
                start: $.fullCalendar.formatDate(start, "yyyy-MM-dd HH:mm:ss"),
                end: $.fullCalendar.formatDate(end, "yyyy-MM-dd HH:mm:ss"),
                noCache: new Date()
            },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...