Как я могу реализовать setinterval в мой ajax скрипт? - PullRequest
0 голосов
/ 23 марта 2020

Я заполняю таблицу html, когда страница загружается с использованием ajax, ajax извлекает данные из файла json, работает хорошо:

$(document).ready(function() {
  $('#mytable').DataTable({
    "order": [
        [0, "desc"]
    ],
    "ajax": "data.json",
    "deferRender": true,
    rowReorder: {
        selector: 'td:nth-child(2)'
    },
    responsive: true,
    columnDefs: [{
            responsivePriority: 2,
            targets: 0
        },
        {
            responsivePriority: 10001,
            targets: 2
        },
        {
            responsivePriority: 1,
            targets: -1
        }
    ]
  });
});

Я бы хотел чтобы использовать setinterval () для перезагрузки таблицы каждые 5 секунд, я попытался добавить:

mytable();
setInterval(mytable, 30000);

в нижней части скрипта, однако это не работает, я предполагаю, что мне нужно использовать что-то другое вместо 'mytable', однако я не уверен, что мне нужно использовать.

Как я могу это исправить?

1 Ответ

1 голос
/ 23 марта 2020

У вас нет функции , называемой mytable, у вас есть элемент HTML с ID из mytable. Вы используете анонимную функцию в вызове AJAX. Но если вы извлечете эту функцию и измените ее на объявление функции , тогда ваш подход будет работать.

$(document).ready(function(){
  fillTable();                  // Run the function
  setInterval(fillTable, 5000); // Then run it every 5 seconds after that
});

// Create a function declaration so you can refer to
// to the function by name later.
function fillTable(){
  $('#mytable').DataTable({
    "order": [
        [0, "desc"]
    ],
    "ajax": "data.json",
    "deferRender": true,
    rowReorder: {
        selector: 'td:nth-child(2)'
    },
    responsive: true,
    columnDefs: [{
            responsivePriority: 2,
            targets: 0
        },
        {
            responsivePriority: 10001,
            targets: 2
        },
        {
            responsivePriority: 1,
            targets: -1
        }
    ]
  });
}
...