从jQGrid中为RESTFul webservice删除额外的查询参数

时间:2012-03-28 08:28:48

标签: jquery rest jqgrid jqgrid-php

我正在使用JQGrid从我在服务器上创建的RESTFul web services获取日期

现在当我尝试点击网址http://www.example.com/event/getAllInfo时,默认情况下jqGrid会将_search=false&nd=1332922405416&rows=20&page=1&sidx=&sord=asc附加到其余网址,因此我的服务器无法获取数据,所以

  

1)我该如何删除它   2)并将其放回到一个网址中,使其看起来像   http://www.example.com/event/getAllInfo/false/1332922405416/20/1/0/asc

我可以像上面那样在服务器上创建url但是如何让jQGrid从RESTful而不是查询字符串中使用它

这是我的代码

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"
    });

1 个答案:

答案 0 :(得分:2)

首先,RESTFul Web服务并不意味着您无法将其他参数发送到服务器。主要思想只是使用URL来标识资源并使用不同的HTTP动词(request methods)进行不同的操作。

只有当您不希望或不能实现服务器端分页,排序和数据过滤时,您才能从将要使用的URL中删除任何其他参数。这样做你可以添加

postData: ""

作为附加参数。在这种情况下,您应该使用loadonce: true或至少rowNum: 10000(或其他一些大值)。在这种情况下,使用gridview: true作为附加参数非常重要(我建议始终使用参数)。服务器应该返回所有数据。如果您使用sortname参数,则应对数据进行排序。

我建议您将Cache-Control: private, max-age=0添加到服务器响应的标头中(请参阅herehere)。

更新:我建议您阅读有关URL编码问题的the answer。就像我之前在评论中写的那样,我认为_search=false&rows=20&page=1&sidx=&sord=asc部分不属于资源。它主要是请求的附加选项或属性。您可以将信息放在loadBeforeSend回调中的HTTP标头内(参见here示例),但我认为这不是一个好主意,并且会简化RESTfull服务的使用,你发展。我建议您只删除nd=1332922405416 jqGrid选项prmNames: {nd: null}并使用Cache-Control来控制缓存或响应。