2015-06-23 5 views
0

Итак, я смотрю на это example и пытаюсь заставить его работать на меня.Вызов fnServerData в DataTables 1.10

Я хочу добавить параметры выбора в таблицу, когда я использую обработку на стороне сервера. Поскольку я использовал только версию 1.10, я всегда смущаюсь, когда вижу этот старый API.

Я не понимаю, как я могу использовать эту функцию в версии 1.10:

"sAjaxSource": "../examples_support/server_processing.php", 
    "fnServerData": function (sSource, aoData, fnCallback) { 
     /* ... additional variables ... */ 
     $.getJSON(sSource, aoData, function (json) { 
      /* Create the select elements on the first run */ 
      if (json.sEcho == 1) 
      { 
       $("tfoot th").each(function (i) { 
        /* Insert the select menu */ 
        this.innerHTML = fnCreateSelect(json.select[i]); 

        /* Add the event listener for the newly created element */ 
        $('select', this).change(function() { 
         oTable.fnFilter($(this).val(), i); 
        }); 
       }); 
      } 

      /* DataTables callback */ 
      fnCallback(json) 
     }); 
    } 

converting guide просто перечисляет fnServerData в ajax.

Это мой код инициализации:

$('#dataTables-outputTest').DataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": "/TestData/data-source", 
    "columns": [ 
     { "data": "thing1", 
      "searchable": true}, 
     { "data": "thing2", 
     "searchable": true}, 
     ... 
     { "data": "link", 
     "searchable": false, 
     "orderable": false}, 
    ], 
    "initComplete": function() { 
     this.api().columns().every(function() { 
      var column = this; 
      var select = $('<select><option value=""></option></select>') 
       .appendTo($(column.footer()).empty()) 
       .on('change', function() { 
        var val = $.fn.dataTable.util.escapeRegex(
         $(this).val() 
        ); 
        column 
         .search(val ? '^'+val+'$' : '', true, false) 
         .draw(); 
       }); 
      column.data().unique().sort().each(function (d, j) { 
       select.append('<option value="'+d+'">'+d+'</option>') 
      }); 
     }); 
    } 
}); 

Как использовать эту функцию, и как я должен переписать это работать на меня?

ответ

0

Кажется, я не понял, что сделал fnServerData. Он может использоваться для отправки дополнительных данных на сервер с клиента. Так что это то, что я пытаюсь сделать.

мне удалось сделать это, используя этот код:

"processing": true, 
    "serverSide": true, 
    ajax: { 
     url: '/MyApp/data-source', 
     data: function (data) { 
      data.someKey = "someValue"; 
     }, 
    }, 

Затем, когда я печатаю мой запрос на сервере я нашел новый объект в словаре:

'someKey': ['someValue'] 
Смежные вопросы