ASP.NET MVC3使用Ajax更新div

时间:2012-02-21 18:10:45

标签: jquery asp.net asp.net-mvc-3 internet-explorer

我知道这个问题可能已经回答了200多次,我已经在过去的2个小时内完成了stackoverflow,现在尝试了所有解决方案,所以我想我会在这里开火......

我的部分视图看起来像这样。

@using DatabaseEntities;
@using NJNightLifePortal.Models;
@model NJNightLifePortal.Models.StatisticsViewModel
@foreach (var item in Model.RecentlyLiked)
{
<div class="resultbox1">
    @Html.ActionLink(item.Username, "profile", "account", new { id = item.Username }, null)
    has recently liked @Html.ActionLink(item.VenueName, "venueprofile", "venue", new { id = item.VenueId, albumId = Utils.GetVenueDefaultAlbumIdByVenueId(item.VenueId) })
</div>    
}

然后我通过setTimeout调用jqery ajax函数,如下所示。

 $(function () {
        setTimeout(
            function () {
                setInterval(RefreshStats, 2000);
                RefreshStats();
            }, 3000);

        function RefreshStats() {
            $.get('@Url.Action("LatestActivities", "Statistics")', function (data, status) {
                console.log(data);
                $('.resultbox1').html(data);
            });

        }

我也尝试了$.load$.ajax ..我也试过了document.getElementById(element).innerHTML = data;,但我仍然得到了相同的结果。上述各项约定中的每一项都在 firefox chrome 中运行良好,但无论我使用IE做什么,它最终都会刷新空白结果或重新创建一个全新的div部分视图甚至没有返回。

请询问或要求我想要解决的问题,并希望有一个可靠的解决方案而不是黑客修复,除非它是必要的。我所要做的就是检索一些数据库结果并显示它们,因为它们在局部视图中被格式化回名为resultbox1的div。

提前非常感谢你。

1 个答案:

答案 0 :(得分:1)

也许IE会缓存响应(对于GET请求来说这是正常的,只是IE在这方面更具攻击性)。要尝试的事情:

  • 使用自定义[NoCache]属性
  • 修饰您的LatestActivities控制器操作
  • 使用POST请求:将$.get替换为$.post
  • $.get替换为$.ajax并设置cache: false选项