title: DataTables deferred loading with columns option
body: <p>I'm using server-side processing mode (<code>"serverSide": true</code>) of jQuery DataTables. I'm using the <a href="https://datatables.net/reference/option/deferLoading" rel="nofollow">deferred loading option</a> to optimize my page load times.</p>
  
  <p>I'm also using the <code>columns</code> option, but there is some conflict when I define the <code>columns</code> option myself. It tries to look for the data source when there isn't any for the first call, which is the whole point of deferred loading.</p>
  
  <blockquote>
    <p>Uncaught Error: DataTables warning: table id=table - Requested unknown parameter 'id' for row 0. For more information about this error, please see <a href="http://datatables.net/tn/4" rel="nofollow">http://datatables.net/tn/4</a></p>
  </blockquote>
  
  <p>Initialization code:</p>
  
  <pre><code>function initialize_table(inital_length)
  {
      table_options = {
          "serverSide": true,
          "ajax": {
              "url": '/merchant/all/',
              "type": 'POST',
              "deferRender": true,
              // data: JSON.stringify(data),
              // contentType: "application/json",
          },
          // "order": [[0, 'asc']]
          "deferRender": true,
          "processing": true,
          "pageLength": 50,
          "deferLoading": inital_length,
          "lengthMenu": [ 20, 50, 100, 200, 500 ],
          "columnDefs": [
              {
                  // "class": "details-control",
                  'data': 'gr_id', // response[data]
                  'name': 'gr_id', 
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 0,
              },
              { 
                  'data': "name",
                  'name': 'name',
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 1,
  
              },
              { 
                  'data': "address",
                  'name': 'address',
                  'orderable': false,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 2,
              },
              {
                  'data': "category",
                  'name': 'category',
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 3,
              },
              {
                  'data': "chain",
                  'name': 'chain',
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 4,
              },
              {
                  'data': "enabled",
                  'name': 'enabled',
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 5,
              },
              {
                  'data': 'status',
                  'name': 'status',
                  'orderable': true,
                  'search': {'regex': false, 'value': ''},
                  'searchable': true,
                  "targets": 6,
              }
          ],
      }
      var merchant_table = $("#merchant-table").DataTable(table_options);
  }
  </code></pre>