2012-05-16 44 views
1

为什么PostData值永远不会发送到服务器?如果我用户fixwed值POSTDATA:{测试:“3”}它的工作原理,但使用功能没有被传递到服务器时..... 萤火虫不露测试变量postData未发送到服务器jqgrid

$("#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 

的任何踪迹});

回答

0

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

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

你的代码的问题在于你试图将一个函数(代码)传递给服务器。相反,你需要直接传递数据:

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

我试图做的是在这里解释说:http://stackoverflow.com/questions/2826478/jqgrid-not-updating-data-on-reload。所以postData似乎接受一个函数,它会在每次重新加载网格时动态更新 –

0

你需要实际执行已设置你的POSTDATA的职能。

添加到这一点您serializeRowData:

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