2011-04-27 158 views
2

我無法看到任何參數值傳遞到服務器在螢火蟲。這是代碼。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 

感謝,

一個

回答

4

您目前執行的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); 
} 

在上面的代碼中,我們列舉的所有屬性,並明確調用所有功能。此外,我更喜歡使用json2.js中的JSON.stringify函數。該功能將在許多Web瀏覽器中實現。

查看演示here

+0

@Oleg:我用你的一段代碼替換了我的serializeGridData。現在我可以看到傳入服務器的參數在螢火蟲中。它工作正常。但它不會改變價值。它不斷從控制中獲得舊的價值。我認爲postData:部分應該照顧這一點。但它沒有。謝謝 – user659469 2011-04-28 14:48:13

+0

@ user659469:你寫過「但它不會改變價值,它會不斷從控制中獲得舊的價值」。對不起,但我不明白你的意思是什麼,哪些值。此外,您不會在任何時候發佈您使用的HTML。 – Oleg 2011-04-28 15:04:25

+0

@Oleg:我的意思是說我設置爲postData部分內的參數的控制值。 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(); } },CampaignsDdlSelectedValue,endDate,startDate所有這些都不會改變! – user659469 2011-04-28 15:07:48