【问题标题】:MVC Extensions Grid JQuery 1.8.2 failureMVC 扩展网格 JQuery 1.8.2 失败
【发布时间】:2013-02-15 15:04:42
【问题描述】:

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

如果我运行 JQuery 1.7.1,我不会看到同样的错误。 MVC Extensions 网格是否应该与 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 根据要求需要更新版本。

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

【问题讨论】:

  • 这对您有帮助吗? andypottsblog.blogspot.com/2012/10/…
  • 这看起来是一个不同的问题。我的问题似乎是 Telerik MVC 扩展网格似乎与 JQuery 1.8.2 不兼容
  • 你注意到最后关于 jQuery(false) 调用的部分了吗?那是你的问题,我相信。我认为 Telerik 正在内部加载 jQuery 1.7.1。我认为你需要做 jQuery(false) 来防止这种情况。我可能是错的。我没有 Telerik 来测试它。更多信息:telerik.com/community/forums/aspnet-mvc/grid/…
  • 我已经添加了 .JQuery(false) 调用,因为我在母版页中手动添加了对 JQuery (1.8.2) 的引用。问题不是 1.7.1,而是网格似乎与 1.8.2 不兼容

标签: jquery telerik telerik-grid telerik-mvc


【解决方案1】:

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

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

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

如前所述,使用 JQuery 1.7.1 版本时不会出现该错误。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2012-05-20
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多