初始调用后MVC Ajax调用失败

时间:2014-12-19 12:36:15

标签: ajax asp.net-mvc fullcalendar

民间

我正在构建一个ASP.Net MVC 5 Web应用程序。它使用JQuery FullCalendar http://fullcalendar.io/

其上包含FullCalendar的页面连接到我的Controller中的JsonResult方法,该方法使用Json数据返回并使用各种事件填充日历。当我点击日历上的某个事件时,会调用FullCalendar的eventClick部分,就像这样。

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调用不会发生。

我希望这是有道理的。

我真的很感激任何有关这方面的帮助,因为我试图找出问题所在的砖墙。

提前致谢。

更新

持有FullCalendar的DIV不在Partial 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中。很奇怪。

2 个答案:

答案 0 :(得分:2)

将您的ajax调用更改为包含cache: false,如下所示。这通常可以解决Internet Explorer ajax调用的问题! 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);
    }
});

答案 1 :(得分:0)

这个脚本在你的部分内吗? 尝试将此脚本移动到部分位置,以便在调用ajax后进行刷新。