2014-02-11 2 views
7

Я пытаюсь использовать Datatables в моем проекте. Я хочу понять использование опции обратного вызова «fnServerData». Я прошел через док Here и видел следующий пример кода -Понимание fnServerData в Datatables

$(document).ready(function() { 
    $('#example').dataTable({ 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": "xhr.php", 
    "fnServerData": function (sSource, aoData, fnCallback, oSettings) { 
     oSettings.jqXHR = $.ajax({ 
     "dataType": 'json', 
     "type": "POST", 
     "url": sSource, 
     "data": aoData, 
     "success": fnCallback 
     }); 
    } 
    }); 
}); 

Что такое «sSource», «aoData» параметры здесь и как мы поставляем значение в нем? Кроме того, вместо того, чтобы помещать JSP или PHP в качестве источника (sAjaxSource), можем ли мы представить форму, которая будет получать данные JSON динамически?

ответ

22

fnServerData является внутренней функцией в dataTables, которая может быть написана с помощью собственного обработчика ajax. В этом случае с удобной функцией jQuery Read more here

Параметры определены в ядре dataTables и требуются в этом конкретном порядке.

sSource - это URL-адрес, где расположен ваш источник данных. Он устанавливается при инициализации значением в sAjaxSource. В этом случае xhr.php

aoData - это массив параметров, который будет отправлен на источник данных. Это содержит по умолчанию paginationinfo, sortinginfo, filterinfo и т. Д. (Которые автоматически задаются ядром), к которым должен реагировать ваш сценарий dataSource. (Например: Ограничьте sql-запрос на размер страницы и т. Д.). Чтобы отправить дополнительную информацию по вашему запросу, вы можете нажать другие значения до aoData. Как так:

"fnServerData": function (sSource, aoData, fnCallback, oSettings) { 
       aoData.push({ "name": "Input1", "value": $("#data1").val() }); 
       aoData.push({ "name": "Input2", "value": $("#data2").val() }); 
    oSettings.jqXHR = $.ajax({ 

(Получит значения двух полей ввода имени data1 и data2 с помощью JQuery из формы и включить их в POST как Input1 и Input2)

Если вы хотите знать, что отправляется, вы можете посмотреть консоль POST Data with Firebugs или изменить тип на GET. Затем вы увидите переданные параметры в адресной строке (обратите внимание, что это может быть очень длинная строка, которая может быть отключена).

fnCallback также является встроенной функцией ядра, которую можно перезаписать, но в данном случае это не так. Вы должны предоставить свою собственную функцию, если вы захотите выполнить некоторую постобработку в JS после получения данных.

Относительно второй части вашего вопроса: Конечно, вам не нужно использовать PHP или JSP. Любой серверный язык, который может обслуживать данные JSON динамически, хорош (Phyton, Node, вы его называете ...)

+1

Если вы используете ASP.NET MVC, а в вашем контроллере есть параметр типа jQueryDataTableParamModel, учтите что вам нужно создать дочерний класс (класс, который простирается от jQueryDataTableParamModel) и добавить свойство для каждого дополнительного поля, которое вы отправляете от клиента на сервер. В этом случае вы должны добавить два свойства: Input1 и Input2. Таким образом, ASP.NET MVC автоматически свяжет значения. –

+0

Спасибо за информацию. К сожалению, я не очень много знаю об ASP.NET MVC :-(Но я уверен, что это полезно! – mainguy

+0

отличное объяснение. Спасибо – Richie

Смежные вопросы