1

我最近将 JQuery 升级到版本 1.8.2,并注意到我的 MVC 扩展网格在呈现为空(绑定到空数据源)时开始给我 JavaScript 错误:

如果我运行 JQuery 1.7.1,我没有看到同样的错误。MVC 扩展网格是否应该与 JQuery 1.8.2 兼容?

具体来说,错误似乎涉及 JQuery 的数据过滤方法的扩展(在 telerik.grid.min.js 内):

telerik.grid.min.js 中的以下行导致语法错误: dataFilter:function(v,w){v=eval("("+v.replace(j,"new Date($1)")+") ");

在我的解决方案中,我在同一页面上混合了 Kendo 和 MVC 扩展网格,因此我需要升级 JQuery,因为 Kendo 根据要求需要更新版本。

有没有其他人看到过这种行为?

4

1 回答 1

1

我更详细地查看了它,错误的原因是网格在呈现为空时向服务器发出 Ajax 请求。我想阻止这种行为,但网格似乎没有提供一个简单的选择退出这个请求。不确定网格如何确定请求的路由,但在我的情况下,它是针对“/”路由的,并且响应与 Telerik grid JS 中的波纹管代码不兼容:

dataFilter:function(v,w){v=eval("("+v.replace(j,"new Date($1)")+")"); 

我用一个网格制作了一个简单的示例项目,并观察到与我的真实项目相同的失败。

正如我之前提到的,使用 1.7.1 版本的 JQuery 时不会出现该错误。

这在 JQuery 版本 1.7.1 中没有失败的原因是上面的 Telerik 代码是在消耗异常的 try catch 块内执行的。在 Jquery 1.8.2 中,try catch 已被删除,因此错误将出现在 UI 中。

我非常感谢 Telerik 团队就这个空网格 Ajax 请求背后的原因提供一些反馈。如果每次网格呈现为空时都命中“/”路由,似乎可能会导致很多副作用。

我当前的解决方法是满足空网格 Ajax 请求和后续日期解析(在 dataFilter 内),如果我检测到其中一个请求,则从我的操作中返回一个简单的日期......这将防止上述代码引发异常...... ..希望有一个更无缝的解决方案。

于 2013-02-16T21:58:39.307 回答