postData不会发送到jqgrid中的服务器

时间:2012-05-16 16:50:46

标签: jqgrid

为什么PostData值永远不会发送到服务器?如果我用一个fixwed值postData:{test:“3”}它可以工作但是当使用函数时,没有任何东西传递给服务器..... Firebug不会显示任何测试变量的痕迹

$("#tblgrid").jqGrid({
            datatype: 'json',
            ajaxGridOptions: { contentType: "application/json" },
            ajaxRowOptions: { contentType: "application/json", type: "POST" }, //row inline editing
            serializeGridData: function(postData) { return JSON.stringify(postData); },
            jsonReader: {
                repeatitems: false,
                id: "0",
                cell: "",
                root: function(obj) { return obj.d.rows; },
                page: function(obj) { return obj.d.page; },
                total: function(obj) { return obj.d.total; },
                records: function(obj) { return obj.d.records; }
            },
            url: 'orthofixServices.asmx/GetProductList',
            postData: { test: function() { return $("#tid").val(); } },
            datatype: 'json',
            colNames: ['id', 'Product Description', 'Commission Rate'],
            colModel: [
            { name: 'id', width: 50 },
            { name: 'description', index: 'desc', width: 380, editable: true },
            { name: 'commissionrate', index: 'com', width: 120, editable: true, unformat: percentUnFormatter, formatter: percentFormatter, editrules: { number: true} }
            ],
            serializeRowData: function(data) {

                var params = new Object();
                params.id = 0;
                params.prdid = 4;
                params.description = data.description;
                params.commissionrate = data.commissionrate;
                var result = JSON.stringify({ 'passformvalue': params, 'oper': data.oper, 'id': data.id });
                return result;
            },
            mtype: "POST",

            rowNum: 4,
            width: 500,
            height: 80,
            pager: '#pager',
            editurl: "orthofixServices.asmx/ModifyProductList"
        });
        $("#tblgrid").jqGrid('navGrid', '#pager', { add: false, edit: false, del: true }, {
        //edit options

    }, {
    //add options     

}, {
//delete options

});

2 个答案:

答案 0 :(得分:0)

postData字段表示要发送到服务器的数据:

  

此数组直接传递给url。这是关联数组,可以这样使用:{name1:value1...}

您的代码存在的问题是您正在尝试将函数(代码)传递给服务器。相反,您需要直接传递数据:

postData: { test: $("#tid").val() }

答案 1 :(得分:0)

您需要实际执行将postData设置为的函数。

将其添加到serializeRowData:

                   for (propertyName in data) {
                        if (data.hasOwnProperty(propertyName)) {
                            propertyValue = data[propertyName];
                            if ($.isFunction(propertyValue)) {
                                dataToSend[propertyName] = propertyValue();
                            } else {
                                dataToSend[propertyName] = propertyValue;
                            }
                        }
                    }