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浏览器中本地实现。
在这里看到演示。