2012-03-05 102 views
1

我正在使用ASP.NET MVC 3创建一个托管商业游戏的Web应用程序。 在设置部分,我必须创建多个小组来玩游戏。 要动态添加队我使用这个脚本。

$("#addTeam").click(function() { 
     $.get("@Url.Action("NewTeam","Admin")", function (template) { 
      $("#teams").append(template); 
     }); 
    }); 

在后台调用我的控制器中的方法。在这种方法中,我生成了一个新的viewmodel实例,然后为每个团队创建一个新的(随机)颜色。 如果我在Firefox中测试,我会为每个团队获得不同的颜色。 但是,当我在Internet Explorer中测试它时,我只为所有团队获得一种颜色。 我的控制器动作也只被调用一次。

有没有人见过这种行为?它看起来像Internet Explorer每次单击链接时都不会执行HTTP获取。

感谢您的帮助。

回答

2

看起来像一个缓存问题。尝试破坏缓存:

$.get("@Url.Action("NewTeam","Admin")" + new Date().getTime(), function (template) { 
    $("#teams").append(template); 
}); 

或:

$.ajax({ 
    url: "@Url.Action("NewTeam","Admin")", 
    cache: false, 
    success: function(template) { 
     $("#teams").append(template); 
    } 
}); 
+0

谢谢你们。完美的作品。 :) – 2012-03-06 07:40:58

0

当您使用获取的浏览器是非常聪明,它只是缓存数据。要解决这个问题,请禁用缓存或生成一些随机字符串作为查询字符串到您的URL

0

IE对缓存ajax请求非常积极。你得到的只是告诉jQuery的要关闭缓存:

$.ajax({ 
    url: "@Url.Action("NewTeam","Admin")", 
    success: function(template) { 
     $("#teams").append(template); 
    }, 
    type: "GET", 
    cache: false 
}); 

所有的选项都记录在这里:http://api.jquery.com/jQuery.ajax/$.get()只是$.ajax()的简写形式,某些选项已为您默认。 $.ajax()可让您更轻松地访问所有选项。