postData不传递任何参数!

我无法看到任何参数值传递给服务器在萤火虫。 这是代码。

//BuyBackGridInit() start function BuyBackGridInit(tabID){ $('table[id$="'+tabID+'_BuyBackGrid"]').jqGrid({ url :'/Controls/Advertiser/BuyBackControlNew.ascx.ashx?action=getBuyBackData', datatype: 'json', mtype: 'POST', height:'100%', width:'100%', colNames: result.colNamesData, colModel: result.colModelData, postData: { advertiserID: function() { return $('#advertiser_id').text(); }, CampaignsDdlSelectedValue: function() { return $('select[id$="CampaignDdl"] option:selected').val(); }, startDate: function() { return $('input[id$="'+tabID+'_FromCalBuyBack_CalendarTbx"] ').val(); }, endDate: function() { return $('input[id$="'+tabID+'_ToCalBuyBack_CalendarTbx"] ').val(); } }, rowNum : 100, shrinkToFit :false, altRows: true, altclass:'altRow', autowidth: true, multiselect: true, gridComplete:function (){ var recs = parseInt( $('table[id$="'+tabID+'_BuyBackGrid"]').getGridParam("records"),10); if (recs == 0){ $('div[id$="'+tabID+'_NoDataFoundBuyBackdiv"]').show(); $('input[id$="AddToCartBtn"]').hide(); $('input[id$="BuyBackDownloadBtn"]').hide(); } else { $('div[id$="'+tabID+'_NoDataFoundBuyBackdiv"]').hide(); $('input[id$="AddToCartBtn"]').show(); $('input[id$="BuyBackDownloadBtn"]').show(); } }, serializeGridData: function (data){ return $.toJSON(data); } });//end of jQuery("#BuyBackGrid").jqGrid() }//BuyBackGridInit() End 

谢谢,

一个

你目前的serializeGridData实现只是从postData 删除所有的函数参数。 所以你应该在serializeGridData里扩展data参数,而不是使用postData 。 另一种方法是将serializeGridData修改为以下内容:

 serializeGridData: function (data){ var propertyName, propertyValue, dataToSend = {}; for (propertyName in data) { if (data.hasOwnProperty(propertyName)) { propertyValue = data[propertyName]; if ($.isFunction(propertyValue)) { dataToSend[propertyName] = propertyValue(); } else { dataToSend[propertyName] = propertyValue } } } return JSON.stringify(dataToSend); } 

在上面的代码中,我们列举了所有的属性并明确地调用了所有的函数。 而且我更喜欢使用JSON.stringify函数。 该function将在许多Web浏览器中本地实现。

在这里看到演示。