2017-05-24 43 views
0

現在我已經實現相同的jQuery代碼,如:數據表,而不從<a href="https://datatables.net/examples/data_sources/server_side.html" rel="nofollow noreferrer">https://datatables.net/examples/data_sources/server_side.html</a></p> <p>指定我使用的指令實施在我的項目的數據表列

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../server_side/scripts/server_processing.php" 
    }); 
}); 

,但它不是我的項目工作,並給出了錯誤:

DataTables warning: ********** Requested unknown parameter '0' for row 0. For more information about this error, please see http://datatables.net/tn/4 

,但是當我指定 jQuery中,如:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../server_side/scripts/server_processing.php", 
     "columns": [ 
       { "data": "id"}, 
       { "data": "item" }, 
       { "data": "name" } 
     ], 
    }); 
}); 

然後它完美的工作,那麼這裏有什麼問題,爲什麼我不能在沒有指定列的情況下使用它?

Ajax響應:

{ 
    "draw": 1, 
    "recordsTotal": 57, 
    "recordsFiltered": 57, 
    "data": [ 
    [ 
     1, 
     "item1", 
     "name1" 
    ], 
    [ 
     2, 
     "item2", 
     "name2" 
    ] 
    ] 
} 
+0

你能發佈你的json響應從服務器processing.php?通常這發生在相應的鍵(0)的值爲空或未定義時。 –

+0

添加的信息 –

+0

如果這真的是AJAX響應,也可以將數字包括在引號中,即「2」,「不是2」...... – davidkonrad

回答

1

據我所看到的,要訪問的對象,而不是二維陣列的陣列。

數據表的默認行爲是在這種格式接收數據:

[ 
    [ "row 1, cell 1", "row 1, cell 2", "row 1, cell 3" ], 
    [ "row 2, cell 2", "row 2, cell 2", "row 2, cell 3" ] 
] 

如果使用不同的數據源格式,因爲我相信你做,你必須指定列,以便數據表可以映射。

你可以找到更多信息here

如果可能,請提供您的JSON響應,以檢查是否是這種情況。

好吧,我現在可以看到您的回覆,如果您用雙引號包裹您的ID,它就會有效。

試試這個 - 創建一個名爲response.php與此內容的文件:

{ 
    "draw": 1, 
    "recordsTotal": 57, 
    "recordsFiltered": 57, 
    "data": [ 
    [ 
     "1", 
     "item1", 
     "name1" 
    ], 
    [ 
     "2", 
     "item2", 
     "name2" 
    ] 
    ] 
} 

創建一個名爲test.php的與此內容的另一個文件:

<head> 
<script src="http://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script> 
</head> 
<body> 
<table id="example" class="display" cellspacing="0" width="100%"> 
    <thead> 
     <tr> 
      <th>ID</th> 
      <th>Item</th> 
      <th>Name</th> 
     </tr> 
    </thead> 
    <tfoot> 
     <tr> 
      <th>ID</th> 
      <th>Item</th> 
      <th>Name</th> 
     </tr> 
    </tfoot> 
    </table> 

<script> 
$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "./response.php" 
    }); 
}); 
</script> 
</body> 

上傳這兩個文件到你的服務器測試它 - 它的工作原理。

+0

添加信息 –

+0

更新:本博客文章是在DataTables 1.10發佈之前撰寫的,因此未使用最新DataTables版本使用的新API或特性,特別是columns.render和columns.data選項。這篇文章留作歷史參考。請參閱手冊以獲取有關DataTables當前版本的信息。 –

+0

@Er.KT,博客文章可能已過時,但知識仍然適用。這種變化在這種情況下僅僅是美觀的。如果您仔細看看自己鏈接的示例,示例*是*使用1.10.x,並且基於[數組源數組**](https://datatables.net/examples/ server_side /腳本/ server_processing。php) – davidkonrad

相關問題