如何在人类可读的网址中制作免费的jqgrid过滤器

时间:2015-12-07 10:01:08

标签: json rest jqgrid odata free-jqgrid

Free jqgrid使用json格式从服务器读取数据。 使用jqgrid高级搜索,工具栏搜索或代码创建过滤条件。

使用

从GET请求查询字符串filters参数中读取
   var urlFilters,
       namedParameters =  window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
                        parameters = {},
                        nameAndValue,
   $grid = $("#grid"), i;
                for (i = 0; i < namedParameters.length; i += 1) {
                    nameAndValue = namedParameters[i].split('=');
                    parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]);
                    if (nameAndValue[0] === "filters") {
                        urlFilters= decodeURIComponent(nameAndValue[1]);
                    }
                }
                $grid.jqGrid({
                    postData: { filters: urlFilters }
                    datatype: "json",

这需要传递编码过滤器条件url,这不是人类可读和可编辑的:

http://localhost//Desktop?filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D

有时用户需要直接编辑浏览器网址以创建新的过滤条件吗?

如何使url人类可读,以便可以直接编辑? 如何强制jqgrid在OData或其他格式中创建高级和工具栏搜索条件,在url中传递时不需要使用%进行转义?

免费的jqgrid有OData插件。 如何从这个插件中提取OData搜索过滤器创建并允许jqgrid以这种格式序列化搜索条件并将其解析回来显示在高级搜索过滤器中? 或者是否可以修改当前搜索条件以便不使用"(%22)?

How to force jqgrid to query data using OData in query stringHow one could use server side sorting and paging with Azure Mobile Services

中存在相关问题

但我不知道哪种方法最好。

OData非常严格。也许在免费的jqgrid搜索条件序列化器和反序列化器中进行一些简单的更改可以使其在URL中进行人工可编辑。但是,使用OData可以使API更加标准化。

使用ASP.NET MVC4和jquery。

1 个答案:

答案 0 :(得分:1)

我个人使用Fiddler非常活跃。它是免费的工具,可以从here下载。 Fiddler允许捕获完整的HTTP流量。它还包括一些简化典型HTTP流量编码和解码的工具。

启动Fiddler后,您可以在工具中选择菜单项&#34; TextWizard&#34;或使用 Ctrl + E 。之后,您将获得非常简单的界面,允许您解码/编码filters值。例如,您可以在向导的顶部插入问题%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Baas%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22KLIENT%22%7D%2C%7B%22field%22%3A%22Liigid%22%2C%22op%22%3A%22eq%22%2C%22data%22%3A%22%22%7D%5D%7D中的过滤器值,并选择URLDecode作为转换操作。您将立即看到解码结果

enter image description here

您可以复制结果修改它并解码回来。例如,过滤器Name cn "bob"应写为{"groupOp":"AND","rules":[{"field":"Name","op":"cn","data":"bob"}]}。使用相同的工具并选择URLEncode操作,您将获得

enter image description here

因此,您可以使用filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Name%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22bob%22%7D%5D%7D作为网址。