为什么在MVC3中使用ajax动态加载表只能在兼容模式下工作?

我正在尝试使用MVC3中的AJAX动态加载表。 为什么这只能在IE9的兼容模式下工作? 有办法解决吗?

视图:

   $.ajax({ type: 'POST', url: "/Index/GetApplicationsForUserJSON", success: function (data) { for (var i = 0; i < data.length; i++) { $("#ApplicationsForUser tbody").append("" + "" + data[i].Application + "" + "" + data[i].Roles + "" + ""); } $("tr:odd").css({ 'backgroundColor': '#ebf0f5' }); } });  
Application Roles

控制器:

  public JsonResult GetApplicationsForUserJSON() { Dictionary tableData = new Dictionary(); tableData.Add("row1", "row1data"); var jsonData = tableData .Select(c => new { Application = c.Key, Roles = c.Value }); return Json(jsonData, JsonRequestBehavior.AllowGet); } 

编辑:图片!

兼容模式关闭

兼容模式开启

我在你的例子中没有看到tbody元素。 但是,.append()调用的选择器包括一个。 也许在兼容性模式下,IE9“假设”存在tbody作为表的内容。

因为某些浏览器甚至在没有假设的情况下会使用数据,因此某些浏览器元素不会在用户请求时刷新。所以你必须通过在控制器级别指定它来强制执行此操作:

 [OutputCache(NoStore = true, Duration = 0)] 

这将告诉浏览器不要存储先前请求的请求相关数据。