为什么在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)]
这将告诉浏览器不要存储先前请求的请求相关数据。