如何传递带空间参数值的URI?在jqgrid

时间:2014-12-03 12:01:44

标签: jquery jqgrid jqgrid-php

主网格代码在

之下
$(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);

以下新网址

我的网址在

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

第2步:使用名称

name=John Williams

var modifiedUrl=escape(name);

以下新网址

我的网址是

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

以上网址没有发布到服务器端,我检查了萤火虫。网址未提交。

1 个答案:

答案 0 :(得分:0)

我想你使用Subgrid as Grid并使用像

这样的代码创建子网格
subGridRowExpanded: function(subgridId, rowId) {
    var id = $.jgrid.stripPref(this.p.idPrefix, rowId);
    ...
    $subgrid.jqGrid({
        url: "/portal/getSubGridData?id=" + id,
    });
    ...
}

您应从不添加常用字符串值作为网址的一部分。而不应该使用标准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版本可以禁止。我建议你最好使用下划线而不是空格。