【问题标题】:MVC Ajax Call Fails After Initial Call初始调用后 MVC Ajax 调用失败
【发布时间】:2014-12-19 21:01:30
【问题描述】:

乡亲

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

一个带有 FullCalendar 的页面连接到我的控制器中的 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 中。很奇怪。

【问题讨论】:

  • 日历在元素TimeEntryPartial内吗?您是否重新订阅事件点击?
  • @Andrei 请查看我更新的问题。我不确定重新订阅事件点击是什么?对不起。感谢您的帮助。
  • 您是否尝试在 eventClick 函数的 ajax 选项中添加cache: falseapi.jquery.com/jQuery.ajax/#options
  • @JamieDunstan 如果我能给你寄一份圣诞礼物,我会的!将cache: false 添加到我的Ajax 声明中解决了我的问题。谢谢!
  • @tgriffiths 不客气!我会将这些信息作为答案发布 - 如果您可以将其标记为已接受,那就太好了:)

标签: ajax asp.net-mvc fullcalendar


【解决方案1】:

将您的 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);
    }
});

【讨论】:

    【解决方案2】:

    这个脚本在你的部分里面吗? 尝试将此脚本移动到您的 ajax 调用后将刷新的部分中。

    【讨论】:

    • 脚本不在部分视图中,在主视图中。
    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2015-07-23
    • 2014-02-10
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多