2017-01-16 13 views
1

DataTables имеет 3 options for using ajax: URL, Аякса объект и пользовательские функции.DataTables перезагрузить пользовательские функции АЯКС

Я использую опцию custom function, и я пытаюсь выяснить, как установить другую функцию ajax после создания DataTables.

Я видел ajax.reload, но это только, кажется, работает с url ajax. Любая идея, как сбросить пользовательскую функцию и перезагрузить данные?


В качестве примера, я хотел бы быть в состоянии сделать это:

// Create DataTable 
dt = $('#MyTable').DataTable({ 
    ajax: function(input, callback, settings) {...} 
}); 

// Update Ajax with a new function call 
function updateAjax() { 
    // reload with new ajax function. 
    dt.ajax.reload(function(input, callback, settings) {...}) 
} 

ответ

1

Я думаю tfidelis ответ тоже будет работать, но я в конечном итоге будет другой маршрут:

// Define variable globally 
var myGlobalState = ...; 

// Create DataTable 
var dt = $('#MyTable').DataTable({ 
    ajax: function(input, callback, settings) { 
    doSomething(myGlobalState); 
    } 
}); 

// Update Ajax when myGlobalState changes 
function updateMyGlobalState() { 
    myGlobalState = ...; 
    dt.ajax.reload(); 
} 
+0

Я понимаю. Поэтому, пожалуйста, сообщите нам, если это сработает. – tfidelis

1

позвольте мне спросить ... зачем вам нужно сбросить функцию Ajax? Я думаю, вам это понадобится, только когда вы снова создадите DataTable. если это так, то просто создать его снова с новой функцией АЯКС:

// Update Ajax with a new function call 
function updateAjax() { 
    dt = $('#MyTable').DataTable({ 
    ajax: function(input, callback, settings) {...} 
    }); 
} 

Если это не так, то не могли бы вы объяснить ситуацию для меня?

+0

Я вручную запрашивая локальную базу данных, и я хочу, чтобы перезагрузить каждый раз, когда изменения базы данных. Я думаю, ваше решение будет работать; однако я решил пойти другим путем, который должен иметь ссылку на функцию ajax как глобальную переменную базы данных. Затем, всякий раз, когда изменяется БД, я просто вызываю dt.ajax.reload() – Jillian

+0

Имейте в виду, что это не сработает, если вы не установите параметр [destroy] (https://datatables.net/reference/option/destroy) to 'true' – Sebastianb

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