2015-05-13 1 views
1

Можно ли отследить ответ из DataTables при перезагрузке таблицы или можно передать все данные (я имею в виду фильтры), которые передаются с помощью запроса DataTables с помощью собственной функции?Как передать тот же запрос или отклик на переменную?

Мне нужен SQL-запрос, построенный классом SSP, а затем использовать его в моей собственной функции. Я хочу сделать что-то с отфильтрованными данными, но мне нужно гораздо больше данных, чем в моей таблице.

Я думал о чем-то вроде этого:

var myData = table.ajax("myFileWithModifiedSSP.php").load(); 

В этом случае было бы передать все Params как обновить таблицу, но в конце концов он будет возвращать что-то еще и НЕ обновить DataTable.

Моя вторая мысль - отправить только параметры с помощью ajax в свой файл и сделать то, что мне нужно. Что-то вроде этого:

function myFuncton(){ 
    $.ajax({ 
    url : "myURL.php", 
    data : DATATABLES_PARAMETERS, 
    success : function(data){ 
     //do what I need 
    } 
    }); 
} 

EDIT

Я не упоминал об этом раньше, что я инициализируется таблицу, добавил несколько собственных фильтров. Теперь все работает отлично. Единственное, что мне нужно - это получить как-то все параметры запроса, которые отправляются сценарием Datatables и использовать их для чего-то еще.

Например, предположим, что у меня есть кнопка с именем «export», я фильтрую данные в своей таблице, используя свои фильтры и поисковую систему (из DataTables), затем я получаю результат в своей таблице. Следующим шагом является щелчок «экспорт», и теперь мне нужны ранее переданные аргументы (по DataTables), чтобы использовать их в другом скрипте, чтобы что-то сделать с данными. Мне нужны только те же параметры, чтобы создать новый запрос и сделать что-то с данными.

+0

Вопрос немного запутанный - вы в основном хотите передать дополнительные данные с сервера? – markpsmith

+0

Нет, мне нужно повторно отправить параметры с помощью моей собственной функции, чтобы восстановить тот же запрос, который был сгенерирован SSP-классом, для заполнения таблицы с помощью (фильтрованных) данных. – Alex

ответ

1

Вы можете использовать ajax.params(), который получает данные, отправленные DataTables на сервер в последнем запросе Ajax.

Смотрите этот пример:

var table = $('#example').DataTable({ 
    ajax: "data.json", 
    serverSide: true 
}); 

table.on('xhr', function() { 
    var data = table.ajax.params(); 
    alert('Search term was: ' + data.search.value); 
}); 

Если вы используете данные, возвращаемые ajax.params() в качестве значения для data собственности $.ajax(), вы можете получить тот же запрос, который может быть представлен на другой URL, например:

$.ajax({ 
    'url': 'script.php', 
    'data': $('#example').DataTable().ajax.params() 
}); 
0

Я думаю, что вам нужно, как этот

$('#datatable_id').dataTable({ 
"iDisplayLength": 50, 
"ajax": function(data, callback, settings) { 
    $.get(url, { 
     param1: param1_value, 
     param2: param2_value, 
    }, function(res) { 
     callback({ 
      data: response.data 
     }); 
    }); 
}}); 

Пожалуйста, обратите внимание, я использую получить как тип метода AJAX. Вы можете использовать сообщение или что бы вы ни хотели.

+0

Я думаю, что это не так. У меня все сделано, инициализированная таблица (в var), собственные фильтры, фильтры DataTable. Единственное, что мне нужно - это запрос, сделанный с помощью SSP (где условие) для фильтрации данных и использования его для других предложений. – Alex

+0

@Alex, пожалуйста, создайте фрагмент, чтобы мы могли лучше помочь вам –