2017-10-07 70 views
0

我正在使用數據表進行服務器處理。我試圖根據一些參數過濾表,但我無法將新的參數發送到服務器。數據表總是使用舊PARAMS如何使用新參數更新數據表

這是我

oTable = $('#mainDataTable').DataTable({ 
     paging:   true, 
     searching:  false, 
     scrollY:  docHeight, 
     //scrollX:  300, 
     stateSave:  false, 
     info:   true, 
     "bServerSide" : true, 
     "sAjaxSource" : "http://myurl/"+getParameters(); //start=1&end=50&foo=bar", 
     "fnServerData": function (sSource, aoData, fnCallback) { 
       $.ajax({ 
        type: "GET", 
        cache: false, // do not cache 
        url: sSource, 
        data: aoData, 
        success: function (json) { 
         fnCallback(json); 
        } 
       }); 
     }, 
     "iDisplayLength": 25, 

我試圖通過調用平局(假)來更新參數,但它會將舊參數到服務器。我也嘗試table.ajax.url(url).load()它再次發送舊的參數。

我通過datatables.net去了,看見像下面

oTable = $('#mainDataTable').DataTable({ 
     paging:   true, 
     searching:  false, 
     scrollY:  docHeight, 
     //scrollX:  300, 
     stateSave:  false, 
     info:   true, 
     "bServerSide" : true, 
     "sAjaxSource" : "http://myurl/"+getParameters(), 
     "fnServerData": function (sSource, aoData, fnCallback) { 
       $.ajax({ 
        type: "GET", 
        cache: false, // do not cache 
        url: sSource, 
        data: { 
         "start": $("#start").val(); 
         "end": $("input[name=end]").val(); 
         "foo": $("input[name=bar]").val(); 
        }, 
        success: function (json) { 
         fnCallback(json); 
        } 
       }); 
     }, 

似乎工作,但現在我的服務器沒有被通過iDisplayStartiDisplayLength等我依靠分頁一些例子

任何想法我做錯了什麼?

回答

0

你應該使用一個功能,而不是變量應該是這樣的:

function getPostData(tableParams) { 
     return $.param(tableParams) + "&" + $.param({ 
       ID:$('#Id').val() 
      }); 
    } 

則:

ajax: { 
      url:proxyPath + modulePath +'getList', 
      data: getPostData 
     }, 

您可以使用此功能,享受

0

也許這個例子可以幫助你。 ..

在jQuery中,每當選擇輸入更改值時,它都使用POS獲取JSON數據T,這裏定義的參數是選擇的價值,也可以使用POST命令(在我的例子是「關鍵」)通過其他參數:

$('select').change(function() { 
    var table = $('#mainDataTable').DataTable(); 
    table.clear().draw(); 
    $.post('scripts/fetch-some-data.php', { 
     key: $('select').val() 
    }, function(data) { 
     table.rows.add(data).draw(); 
    }, 'json'); 
}); 
0

你在正確的軌道......在服務器Side code捕獲新的參數。

 public ActionResult 
     Get([ModelBinder(typeof(DataTablesBinder))] 
     IDataTablesRequest requestModel, string start, string end, string foo) 
     {//all Code here }