EasyUI datagrid在ie下reload失败的问题

#EasyUI datagrid在ie下reload失败的问题

###问题 最近使用EasyUI开发后台系统,测试时发现个奇葩的问题,$('dg').datagrid('reload'); 从新加载表格数据时,ie下一点反应都没有。后来发现其实并非没有反应,而是浏览器使用了缓存。html

###解决方案 网上网友总结出来的解决方案有如下几种:前端

  1. 在url后加时间戳,使第一次加载和reload中访问的url不一致,使系统没法使用IE缓存。经过测试发现,EasyUI请求时后面已经自带一串随机数_145232xxx,可是ie仍是会使用缓存。后来我在请求的js中为url加上rand=xxx(Math.rand()生成的随机数)就不会使用缓存了。(我测试了从ie8到ie11)浏览器

  2. 用相似于在<head>中加<meta>来清除缓存:缓存

     

<META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"> <META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">测试

```

很不幸,跟不少网友同样,这个方法我也失败了。:(url

  1. 将datagrid的load对应的method声明为‘POST’,这个解决方法最快。可是有有几个问题:
    • 要是该服务端接口不支持POST方式就歇菜了。
    • 要是服务端接口本身能控制,这种为了前端妥协的方式,会致使接口一点也不RESTful!要知道RESTful接口对于查询的设计基本上都是GET方式的。

###总结 因此说仍是第一种方法,在url本身加随机数好用,原谅我代码洁癖不想改服务端接口 _(:з」∠)_。.net

###参考设计

  1. http://blog.csdn.net/quwenzhe/article/details/30228663
相关文章
相关标签/搜索