Я строю таблицу с использованием DataTables, и она использует AJAX для своего источника данных. Однако я не могу передать функцию в параметры AJAX; функция $ .post() (из обычного JQuery) всегда отправляет то, что моя переменная оценивает, когда загружается страница. Я довольно плохо разбираюсь в внутренней работе JS, поэтому я не уверен, что я делаю неправильно. Вот мой код:Как передать ссылку на функцию Javascript?
function init_datatable() {
var url = null;
var datasource = null;
// Set AJAX url and data based on which page we're on
if (window.location.pathname.indexOf("bookmarks") > -1) {
url = "/bookmarks";
datasource = bookmarks;
} else {
url = "/search";
datasource = $('#form').serialize();
}
var table = $('#table').DataTable({
"ajax" : function (data, callback, settings) {
$.post(url, datasource, function (data) {
callback(data);
});
}
});
}
Если я пишу $.post(url, $("#form").serialize())
непосредственно, без прохождения в функции serialize()
внутри переменный источник данных, я получаю ожидаемый результат; каждый раз, когда форма изменяется, обновленные данные включаются в запрос POST. Однако, если я сделаю это, как написано выше, источник данных является статическим объектом того, что форма содержалась при загрузке страницы. Я также пробовал делать
datasource = function() {
$("#form").serialize()
}
но это не работает. Как я могу использовать источник данных как статический глобальный объект, так и функцию, которая должна запускаться каждый раз, когда вызывается $.post()
, в зависимости от текущей страницы?
Потому что вы читаете его только при загрузке страницы. Вам нужно будет переместить его внутрь! – epascarello