2012-03-28 45 views
0

我使用的jqGrid擺脫,我已經在服務器上創建從jqGrid的刪除多餘的查詢參數RESTful Web服務

現在,當我嘗試打網址http://www.example.com/event/getAllInfoRESTFul web services日期,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

我可以創建在服務器上面的網址,但我怎麼能做出的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" 
    }); 

回答

2

首先RESTFul網絡服務並不意味着您不能將附加參數發送到服務器。主要思想只是使用URL來標識資源並針對不同的操作使用不同的HTTP動詞(request methods)。

只有當您不希望或不能實現服務器端分頁,排序和數據過濾時,您可以從將要使用的URL中刪除任何附加參數。這樣做,你可以添加

postData: "" 

作爲附加參數。在這種情況下,您應該使用loadonce: true或至少rowNum: 10000(或其他一些較大的值)。在這種情況下,使用gridview: true作爲附加參數非常重要(我建議始終使用參數)。服務器應返回全部的數據。如果您使用sortname參數,則應對數據進行排序。

我建議您將Cache-Control: private, max-age=0添加到服務器響應的標頭中(請參閱herehere)。

已更新:我建議您閱讀the answer關於您詢問關於URL編碼的問題。就像我之前在評論中給你寫的那樣,我認爲_search=false&rows=20&page=1&sidx=&sord=asc這部分不屬於資源。它主要是請求的其他選項或屬性。您可以將信息放置在loadBeforeSend回調內的HTTP標頭中(請參閱here示例),但我認爲這不是一個好主意,並且會簡化您開發的RESTfull服務的使用。我建議您只刪除nd=1332922405416關於prmNames: {nd: null} jqGrid選項並使用Cache-Control來控制緩存或響應。

+0

通過使用postData =「」我可以消除額外的參數或查詢字符串,但我怎樣才能在休息風格中替代'search = false&nd = 1332922405416&rows = 20&page = 1&sidx =&sord = asc'我仍然可以利用休息和分頁 – Hunt 2012-03-28 09:15:04

+0

@Hunt:對不起,您誤解了RESTFull作爲URL的資源概念。你只有一個資源'http:// www.example.com/event/getAllInfo'。 「假」不是子資源,時間戳1332922405416也不是子資源,依此類推。只有與某個資源相對應的URL部分應該採用分層的方式進行編碼。您仍然可以發送一些URL參數,這些參數是您的請求的附加信息。 – Oleg 2012-03-28 09:21:20

+0

因此用url發送查詢字符串不違反RESTFul url約定? – Hunt 2012-03-28 09:24:17