2014-12-19 2 views
0

ЛюдиСбой вызова Ajax MVC после начального вызова

Я создаю веб-приложение ASP.Net MVC 5. Он использует JQuery FullCalendar http://fullcalendar.io/.

Страница с FullCalendar на нем подключена к методу JsonResult в моем контроллере, который возвращает и заполняет календарь различными событиями, используя данные Json. Когда я нажимаю на одно из событий в календаре, вызывается секция eventClick в FullCalendar.

eventClick: function (calEvent, jsEvent, view) { 

       $.ajax({ 
        type: "GET", 
        async: false, //This makes the JQuery below wait until $.ajax() call is finished 
        url: '/TimeEntry/UpdateTimeEntryPartial/', 
        data: { id: calEvent.id }, 
        error: function() { 
         alert("An error occurred."); 
        }, 
        success: function (data) { 
         $("#TimeEntryPartial").html(data); 
        } 
       }); 
} 

Это делает вызов Ajax методу в моем контроллере, который возвращает частичный вид. Возвращенный Partial содержит сведения о событиях, которые затем я могу изменить (дата, часы и т. Д.), А затем выполнить обновление, которое обновляет данные о событиях в моей таблице базы данных.

Здесь проблема. Как только я обновил данные о мероприятии, данные будут правильно обновлены в базе данных. Но когда я снова нажимаю событие в календаре (фактически любое событие), вызов Ajax (см. Выше, больше не происходит). Я поставил точку останова на методе UpdateTimeEntryPartial в моем контроллере, и он так и не дошел до него.

Поэтому, чтобы суммировать, я могу обновить событие один раз, но когда я попытаюсь его обновить снова, вызов Ajax не произойдет.

Надеюсь, это имеет смысл.

Я бы очень признателен за любую помощь в этом, поскольку я ударил по кирпичной стене, пытаясь выяснить, что не так.

Заранее спасибо.

Update

DIV, который держит FullCalendar не внутри частичного TimeEntryPartial.

<div class="panel-body" id="TimeEntryPartial"> 
    @Html.Partial("_TimeEntryPartial", Model.TimeEntry) 
</div> 
<div class="panel-body"> 
    <!-- FullCalendar Here --> 
    <div id="calendar"></div> 
</div> 

<script> 
    $('#calendar').fullCalendar({ 
    //Full Calendar properties including call to get Json data 
    }); 
</script> 

Я также должен сообщить, что эта проблема возникает только в Internet Explorer, а не в Google Chrome или Firefox. Очень странно.

+0

Является ли календарь внутри элемента 'TimeEntryPartial'? Вы пересылаете подписку на событие? – Andrei

+0

@Andrei См. Мой обновленный вопрос. Я не уверен, что повторная подписка на клик события? Сожалею. Спасибо за вашу помощь. – tgriffiths

+1

Вы пытались добавить «cache: false» в параметры ajax в функции eventClick? http://api.jquery.com/jQuery.ajax/#options –

ответ

2

Измените адрес ajax, чтобы включить cache: false, как показано ниже. Обычно это устраняет проблемы с вызовами ajax в Internet Explorer! See the documentation here.

$.ajax({ 
    type: "GET", 
    async: false, //This makes the JQuery below wait until $.ajax() call is finished 
    cache: false, 
    url: '/TimeEntry/UpdateTimeEntryPartial/', 
    data: { id: calEvent.id }, 
    error: function() { 
     alert("An error occurred."); 
    }, 
    success: function (data) { 
     $("#TimeEntryPartial").html(data); 
    } 
}); 
0

Этот сценарий внутри вашего частичного? попытайтесь переместить этот фрагмент в части, где он будет обновляться после вашего вызова ajax.

+0

Сценарий не находится в частичном представлении, он находится внутри основного вида. – tgriffiths

Смежные вопросы