Обновляйте таблицу с помощью jQuery / Ajax каждые 5 секунд - PullRequest
21 голосов
/ 15 апреля 2011

Итак, у меня есть таблица, извлекающая информацию из базы данных, и мне было интересно, как я могу сделать так, чтобы она обновляла информацию, не перезагружая всю страницу.

Ответы [ 6 ]

36 голосов
/ 15 апреля 2011

Вам понадобится страница getTable.php, которая отображает вашу таблицу, и ничего больше: без верхних и нижних колонтитулов и т. Д.

PHP (getTable.php) - это может быть любая сторона серверакод (asp, html и т. д.)

<?php
    echo '<table><tr><td>TEST</td></tr></table>';
?>

Затем в JS можно легко обновить таблицу с помощью метода load():

HTML

<div id="tableHolder"></div>

JS

<script type="text/javascript">
    $(document).ready(function(){
      refreshTable();
    });

    function refreshTable(){
        $('#tableHolder').load('getTable.php', function(){
           setTimeout(refreshTable, 5000);
        });
    }
</script>
9 голосов
/ 15 апреля 2011

Используйте ajax, следующий пример в jQuery:

$(function() {
    var prevAjaxReturned = true;
    var xhr = null;

    setInterval(function() {
        if( prevAjaxReturned ) {
            prevAjaxReturned = false;
        } else if( xhr ) {
            xhr.abort( );
        }

        xhr = $.ajax({
            type: "GET",
            data: "v1="+v1+"&v2="+v2,
            url: "location/of/server/script.php",
            success: function(html) {
                 // html is a string of all output of the server script.
                $("#element").html(html);
                prevAjaxReturned = true;
           }

        });

    }, 5000);
});

Функция успеха предполагает, что ваш серверный скрипт выводит HTML, который вы хотите заменить в элементе с идентификатором 'element'.

6 голосов
/ 15 апреля 2011

У вас должна быть страница, которая возвращает информацию и извлекает данные, используя Ajax / jQuery.

<div class="result"></div>

setInterval(function() {

    $.get('table.php', function(data) {
      $('#result').html(data);
    });

}, 5000);
2 голосов
/ 15 апреля 2011

Вот еще один вариант для вас. Это решение использует IIFE , который предпочтительнее, чем setInterval. Вы можете прочитать больше о IIFE по ссылке выше.

JAVASCRIPT:

var $results = $('#results'),
    loadInterval = 5000;
(function loader() {
    $.get('script.php', function(html){
            $results.hide(200, function() {
                $results.empty();
                $results.html(html);
                $results.show(200, function() {
                    setTimeout(loader, loadInterval);
                });
            });
    });
})();

HTML:

<div id="results"></div>
1 голос
/ 21 июля 2015

Следующие работы с JQuery Datatables 1.10

`var tableName;
//Set AJAX Refresh interval.
$(function() {
    setReloadInterval(10);  //Refresh every 10 seconds. 
}

//Because function takes seconds we * 1000 to convert seconds to milliseconds.
function setReloadInterval(reloadTime) {
    if(reloadTime > 0)
        internalId = setInterval("reloadTable()", (reloadTime * 1000);
}

//Auto Refresh JQuery DataTable 
function reloadTable() {
    tableName.ajax.reload();
}

//Table defined...
$(document).ready(function () {
    tableName = $('#tableName').DataTable({
        "sAjaxSource": "/someUrl",
});`
1 голос
/ 15 апреля 2011
setTimeout(function(){

      jqueryFunction(Args);

},100);

будет работать ...

100 = 100 миллисекунд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...