DataTables에는 ajax 옵션이 있어서 데이터를 json 형태로 외부로부터 받아올 수 있다.

그런데, 데이터도 멀쩡하고, 연결된 컬럼 설정도 멀쩡한데도 이런 에러가 튀어나올 때가 있다.

DataTables warning: table id=token-table - [object Object]

DataTables의 ajax 옵션 코드를 보면 json 데이터에 error 혹은 sError 엘리먼트가 있으면 에러 로그를 보여주게 되어 있다.

// jquery.dataTables.js 중에서
var baseAjax = {
  "data": data,
  "success": function (json) {
    var error = json.error || json.sError;
    if ( error ) {
      _fnLog( oSettings, 0, error );
    }
    ...

예를 들면 데이터가 아래와 같다면,

{
  "error": {
    "code": 200,
    "text": "No problem. It's Okay"
  },
  "data": [
    "user1",
    "user2",
    "user3",
    "user4"
  ]
}

error를 감지해 경고를 띄울텐데, error안에 또 다른 엘리먼트들이 존재하니 [object object]를 띄우는 것.

저 에러를 안 뜨게 하려면 당연히 DataTables 코드를 직접 고치면 될테고, 아래처럼 DataTables를 쓰기 전에 그냥 에러 메시지를 뱉지 않도록 코드를 추가해도 된다.

$.fn.dataTable.ext.errMode = 'none';

$('#tableId').DataTable({
  ajax: {
    url: 'https://www.example.com/api/users',
    type: 'GET',
    ...

참고로 에러 메시지를 아예 안 뱉는 것보다 콘솔에 띄우는 게 낫다면 none 대신 throw를 사용하면 된다.

$.fn.dataTable.ext.errMode = 'throw';