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.
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>
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'.
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);
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>
setTimeout(function(){
jqueryFunction(Args);
},100);
fonctionne...
100 = 100 millisecondes
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",
});`