从jqGrid的用于RESTful Web服务中删除多余的查询参数(remove extra que

2019-10-28 22:07发布

我使用的jqGrid来从日RESTFul web services ,我已经在服务器上创建

现在当我尝试打网址http://www.example.com/event/getAllInfo中,jqGrid的默认追加_search=false&nd=1332922405416&rows=20&page=1&sidx=&sord=asc的休息url和的,因为我的服务器没有数据取回来,所以

1)如何删除它
2),并把它放回一个URL以这样一种方式,它看起来http://www.example.com/event/getAllInfo/false/1332922405416/20/1/0/asc

我可以在服务器上创建的URL上面一样,但我怎么能做出的jqGrid使用它从REST风格而不是从查询字符串

这里是我的代码

jQuery("#list4").jqGrid({
        url:"http://www.example.com/event/getAllInfo",
        datatype: "json",
        restful:  true,
        mtype: 'GET',
        height: 250,
        colNames:['id','title', 'description', 'create date','json','img','video'],
        colModel:[
            {name:'id',index:'e_info_id', width:60, sorttype:"int"},
            {name:'title',index:'e_meta_title', width:90, sorttype:"date"},
            {name:'name',index:'e_meta_description', width:100},
            {name:'amount',index:'e_info_create_date', width:80, },
            {name:'tax',index:'e_meta_JSON', width:80},     
            {name:'total',index:'e_meta_img', width:80},        
            {name:'note',index:'e_meta_video', width:150}       
        ],
        multiselect: true,
        caption: "Manipulating Array Data"
    });

Answer 1:

首先所有的RESTful Web服务并不意味着你不能发送额外的参数给服务器。 其主要思想只能使用URL标识资源,并使用不同的HTTP动词( 请求方法 )进行不同的操作。

只有当你不想或者不能够实现服务器端分页,排序和过滤数据,你可以从中将要使用的URL删除任何其他参数。 难道这样做,你可以再补充

postData: ""

作为附加参数。 在这种情况下,你应该使用loadonce: true或至少rowNum: 10000 (或其他较大的值)。 在这种情况下使用起来会非常重要gridview: true的附加参数(我建议总是使用参数)。 服务器将返回所有数据。 如果你要使用的数据应该进行排序sortname参数。

我建议你添加Cache-Control: private, max-age=0到服务器响应的头部(见这里和这里 )。

更新 :我建议你阅读的答案在你问的URL编码的问题。 就像我在评论以前写你,我觉得部分_search=false&rows=20&page=1&sidx=&sord=asc不属于资源。 这主要是一个额外的选项或请求的性质。 您可以将在HTTP头信息的内部loadBeforeSend回调(看到这里的例子),但我不认为这将是好主意,将简化你开发问题的REST服务的使用。 我建议你只是删除nd=1332922405416方面的prmNames: {nd: null} jqGrid的选项,并使用Cache-Control ,以控制缓存或响应。



文章来源: remove extra query parameters from jQGrid for RESTFul webservice