2014-12-03 146 views
0

主網格代碼是下面如何傳遞帶有空格的參數值的URI?在的jqGrid

$(document).ready(function() { 
    jQuery("#list5").jqGrid({ 
     url: 'server.php?mode=getBaseList', 
     datatype: "json", 
     colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'], 
     colModel: [{ 
      name: 'id', 
      index: 'id', 
      width: 55 
     }, { 
      name: 'invdate', 
      index: 'invdate', 
      width: 90 
     }, { 
      name: 'name', 
      index: 'name', 
      width: 100 
     }, { 
      name: 'amount', 
      index: 'amount', 
      width: 80, 
      align: "right" 
     }, { 
      name: 'tax', 
      index: 'tax', 
      width: 80, 
      align: "right" 
     }, { 
      name: 'total', 
      index: 'total', 
      width: 80, 
      align: "right" 
     }, { 
      name: 'note', 
      index: 'note', 
      width: 150, 
      sortable: false 
     }], 
     rowNum: 10, 
     jsonReader{ 
     id:'id',repeatitems:false 
     }, 
     rowList: [10, 20, 30], 
     pager: '#pager5', 
     sortname: 'name', 
     autoencode: true, 
     loadonce:true, 
     sortable: true, 
     viewrecords: true, 
     sortorder: "desc", 
     multiselect: false, 
     subGrid: true, 
     subGridRowExpanded: function(subgrid_id, row_id) { 
     var newID = $('#list5').getCell(row_id, 'id'); 
     var escapeID=escape(newID); 

     var subgrid_table_id, pager_id; 
     subgrid_table_id = subgrid_id+"_t"; 
     pager_id = "p_"+subgrid_table_id; 
     $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>"); 
     jQuery("#"+subgrid_table_id).jqGrid({ 
     url:"/portal/getSubGridData?id="+escapeID, 
     datatype: "json", 
     colNames: ['No','Item','Qty','Unit','Line Total'], 
     colModel: [ 
     {name:"num",index:"num",width:80,key:true}, 
     {name:"item",index:"item",width:130} 
     ], 
     rowNum:20, 
     pager: pager_id, 
     sortname: 'num', 
     sortorder: "asc", 
     height: '100%' 
     }); 
     jQuery("#"+subgrid_table_id).jqGrid('navGrid',"#"+pager_id,{edit:false,add:false,del:false}) } 
     caption: "Simple data manipulation" 
    }).navGrid("#pager5", { 
     edit: false, 
     add: false, 
     del: false 
    }); 
}); 
jQuery("#list5").jqGrid('filterToolbar',{searchOperators : true}); 

如何通過URI具有空間參數值?我觀察到JS中取消了'%20'或'_'。我該怎麼辦?

我想: 第1步:使用ID

id=10054898 104143018 

var modifiedUrl=escape(id); 

新的URL如下

我的網址是低於

newUrl=/portal/getSubGridData?id=10054898%20104143018 

第2步:使用名稱

name=John Williams 

var modifiedUrl=escape(name); 

如下

我的網址是

newUrl=/portal/getSubGridData?name=John%20Williams 

上述網址不發佈到服務器端新的URL,我已經檢查螢火蟲。網址未被提交。

+0

試圖發出POST請求時會出現什麼錯誤? – 2014-12-03 12:02:53

+0

你使用的JavaScript代碼在哪裏?如果你使用'postData',這個問題根本不應該存在。可以使用'encodeURIComponent'或使用jQuery的$ .param'方法。如果您發佈** JavaScript代碼,您可以使用相應的示例發佈我的答案。 – Oleg 2014-12-03 12:04:36

+0

我有使用post方法(mtype是post)。但服務器端沒有得到數據提供 – 2014-12-03 12:05:00

回答

0

我想你使用Subgrid as Grid並創建子網格的代碼一樣

subGridRowExpanded: function(subgridId, rowId) { 
    var id = $.jgrid.stripPref(this.p.idPrefix, rowId); 
    ... 
    $subgrid.jqGrid({ 
     url: "/portal/getSubGridData?id=" + id, 
    }); 
    ... 
} 

你應該從未添加常見字符串值作爲URL的一部分。相反的,你應該使用標準的JavaScript方法encodeURIComponent

 url: "/portal/getSubGridData?id=" + encodeURIComponent(id), 

或jQuery.param方法

 url: "/portal/getSubGridData?" + $.param({id: id}), 

更容易將使用

 url: "/portal/getSubGridData", 
     postData: { 
      id: id 
     } 

在這種情況下的ID將被添加到其他參數,這些參數將被髮送到服務器,並且我希望您能夠在服務器端進行分析。如果您使用HTTP GET,則可以使用PHP中的$_GET訪問參數。如果你使用mtype: "POST",那麼你使用$_POST(有些像$_POST["id"])訪問參數。我不是PHP開發人員,但我不明白爲什麼可以將一些參數附加到URL並使用標準方式發佈另一個參數:HTTP POST請求正文內部。

最後一句:我強烈建議你不要在id中使用空格。取決於您使用的是哪個版本的HTML 可能會被禁止。我建議你最好使用下劃線而不是空格。