2014-10-17 66 views
1

jQuery ajax數據表發送過濾器的參數如下數組 如何更改它發送實際值和列的名稱?基於Ajax的jQuery數據表發送列爲「列」=>「[object Object]」

Parameters: { 
"draw"=>"2", 
"columns"=>"[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]", "order"=>"[object Object]", 
"start"=>"0", 
"length"=>"10", 
"search"=>"[object Object]" 
} 

回答

2

對我來說同樣的問題。我發現原因是我過去的jquery設置jQuery.ajaxSettings.traditional = true。刪除這個設置適用於我

2

在你的Datatable配置中添加fnServerData。

"fnServerData": function (sSource, aoData, fnCallback, oSettings) { 

       $.ajax({ 
        "dataType": 'json', 
        "type": "GET", 
        "url": "/Home/AjaxGetJsonData", 
        "data": oSettings.oAjaxData, 
        "Content-Type": "application/json", 
        "success": function (json) { 
         fnCallback(json); 
        } 
       }); 

      } 
+0

現在我已經加入 如果(oSettings.sAjaxSource === NULL){ aoData = oSettings.oAjaxData; } ...在Ajax調用之前,它完美地工作。非常感謝! – Ben 2016-12-01 11:30:29

0

如果您使用的是fnServerData,那可能是您的問題。您可以遷移到使用preXhr.dt。

var oTable = $('#my-table') 
    .on('preXhr.dt', function (e, settings, data) { 
     ... 
    }).DataTable({ 
     "serverSide": "true", 
     "ajax": '/indexData', 
     ... 
    }); 

這裏的原因:

使用fnServerData觸發了_fnBuildAjax功能,它在數據對象轉換爲陣列的截面。這反過來在jQuery.ajax中觸發邏輯,它期望「如果傳入數組,則假定它是一個表單元素數組。

所以它使用非常簡單的非遞歸將參數轉換爲參數字符串的方法。而且由於它的非遞歸,第二級對象會轉換爲簡單的[+對象對象],而不是用自己的嵌套屬性等