web-dev-qa-db-ja.com

Datatables TypeError:cは未定義です

JQuery DataTablesを使用しようとしましたが、エラーが発生します

TypeError:cは未定義です

JSONが正しく取得され、正しい形式であることを見ることができるため、コードの何が問題なのかわかりませんが、上記のエラーが発生することの何が問題なのかわかりません。

私のJSON:

{"Data":[{"LOGIN":10184},{"LOGIN":10214},{"LOGIN":10180},{"LOGIN":10187},{"LOGIN":10179},{"LOGIN":10280},{"LOGIN":201},{"LOGIN":10238},{"LOGIN":10296},{"LOGIN":10312}]}

と私のDataTablesコード:

$(document).ready(function() {
    $('#tablename').dataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": {
            "type": "POST",
        "url": "https://test.com/api/db/select",
        "data": function ( json ) {  return JSON.stringify( { "Sql": 12 } );},
        "contentType": "application/json; charset=utf-8",
        "dataType": "json",
        "processData": true,
            beforeSend : function(xhr){
                        var access_token = sessionStorage.getItem('access_token');
                        xhr.setRequestHeader('Authorization', 'Bearer ' + access_token);
            }
        },
        "dataSrc": "Data",
        "columns": [
            { "data": "LOGIN" }
        ]
    } );
} );
37
Ali Mahmoudi

dataSrc は特別なdataTables ajaxオプションであり、ajaxオブジェクト内に含める必要があります。

"ajax": {
    "dataSrc": "Data", //<--- place dataSrc here instead
    "type": "POST",
    ...
}

これをajaxの外に配置しました。そのため、dataTablesには、使用するソース(盲目的にajax応答を試行する以外に)またはLOGINが属する場所がわかりません。

6
davidkonrad

追加したかどうかを確認します

<thead></thead>

<tbody></tbody>

これらを追加することでこの問題を解決しました。

したがって、基本的には次のような構造でなければなりません。

<table>
 <thead>
  <tr>
   <th></th>
   <th></th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td></td>
   <td></td>
  </tr>
 </tbody>
</table>
84

時々、このタイプの問題は、HTMLおよびdatatablesの列で不一致/不等の列を修正することで発生します。

"columns": [
        null,
        null,
        null,
        {"orderable": false, "width":"2%"},
    ],

上記のJavaScriptは4列を定義し、HTMLは5列を持っています

<tr>
   <td>A</td>
   <td>B</td>
   <td>C</td>
   <td>D</td>
   <td>E</td>
</tr>

したがって、両方の側のHTMlおよびDatatable構成を修正/等しくする必要があります。

"columns": [
        null,
        null,
        null,
        null, //Added New
        {"orderable": false, "width":"2%"},
    ],
12
Raju Rajpurohit

私の場合、thead内のthからcolspan属性を削除し、エラーを取り除く必要がありました;(

4
Qasim Ali

私の場合、ajax.dataSrc(data)関数を使用してデータを操作したため、同じエラーが発生しました。しかし、その後、データを返すのを忘れました。

"dataSrc": function ( json ) {
  for ( var i=0, ien=json.data.length ; i<ien ; i++ ) {
      //somethings...
  }
  return json.data;// I forgot this line, then i got the error "TypeError: c is undefined"
}

数分後、私はajax.dataSrc関数のドキュメントを確認しましたが、戻り値がないことに気付きました。

戻り値:array DataTablesがテーブルの描画に使用するデータの配列

あなたが同じ気晴らしを持っていないことを願っています...

1
MrMojoRisin

私の場合、サーバー側でデータが欠落していると結果が返されます。

//Javascript
$('#table').DataTable({
        sAjaxSource: '/load',
        aoColumns: [
         ...
        ],
});
//server side(in Rails)
render json: {'aaData'=>data}
0
hobbydev