Rafraîchir une table avec jQuery / Ajax toutes les 5 secondes

donc j'ai une table qui tire des informations d'une base de données et je me demandais comment je pouvais la faire rafraîchir sans recharger toute la page.

21
demandé sur M4N 2011-04-15 23:23:52

6 réponses

Vous aurez besoin d'un getTable.php page qui affiche votre table, et rien d'autre: pas de en-tête, Pas de pied de page, etc.

PHP (getTable.php) - cela peut être n'importe quel code côté serveur (asp, html, etc..)

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

puis, dans votre JS, vous pouvez facilement rafraîchir la table en utilisant le load() méthode:

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>
34
répondu Dutchie432 2015-02-23 15:20:39

Utilisez ajax, l'exemple suivant est dans 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);
});

la fonction de succès suppose que le script de votre serveur affiche le html que vous voulez remplacer dans l'élément par id 'element'.

9
répondu Jeff Lambert 2013-07-20 00:13:29

Vous devriez avoir une page qui renvoie l'information et tire les données en utilisant Ajax / jQuery.

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

setInterval(function() {

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

}, 5000);
6
répondu Etienne Dupuis 2018-06-27 13:50:14
IIFE qui est préférable à setInterval. Vous pouvez en savoir plus sur L'IIFE en cliquant sur le lien ci-dessus.

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>
2
répondu Kyle Rogers 2011-04-20 16:23:57
setTimeout(function(){

      jqueryFunction(Args);

},100);

fonctionne...

100 = 100 millisecondes

1
répondu Eric Frick 2011-04-15 19:34:10

ce qui suit fonctionne avec 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
répondu wrgoff 2015-07-21 09:27:24