Bonjour,
Je sais qu'en lisant seulement le titre, vous allez me dire que beaucoup de solutions existent sur les forums.
J'ai affiché dans un tableau le contenu d'un table de ma base de donnée, seulement je voudrai que les données s'actualisent automatiquement toutes les 3 secondes, sans être obligé de recharger la page complète avec Ajax.
J'ai commencé à recupérer les données comme ceci :

$.ajax({
  type: "GET",
  url: "gestion/display.php",
  dataType : 'html',
  timeout : 3000,
  success : function(data){
  $('#display_ajax').html(data);
  }
})

J'ai mis timeout :3000, pour actualiser toutes les 3 secondes, mais cela ne marche pas.
Je n'ai pas envie d'utiliser jquery avec load. Quelqu'un serait comment faire actualiser les données toutes les 3 secondes?
Merci!

6 réponses


quentin_ney
Réponse acceptée

Salut,

si tu regardes la documentation de timeout, tu vois que ça ne correspond pas à un interval mais au temps en millisecondes avant que la requête se fasse. Pour éxecuter une fonction toutes les n secondes, tu peux regarder setInterval

Mehdikacim
Réponse acceptée

setInterval est la solution.

Mehdikacim
Réponse acceptée

Possible de voir ton code ?
Mais je pense avoir la solution

Mehdikacim
Réponse acceptée

J'ai la solution (celle que je pensais)

function display(){
setInterval(function(){ 
      $.ajax({
  type: "GET",
  url: "gestion/display.php",
  dataType : 'html',
  success : function(data){
  $('#display_ajax').html(data);
  }
})
     }, 3000);
 }

display(); //LA

Explication:
Avec ton premier code, ta requête ajax est faite au bout de 3 secondes (3000)
Ce qui est normal
En mettant ta requête dans une fonction, et en faisant un pti coup de display(), tu forces l'exécution direct.

C'est bon j'ai trouvé suffisait d'appeller de créer une fonction et l'appeler en début! Merci pour l'aide ;)

Si tu veux garder le fait d'avoir une fonction, je te recommande plutôt de faire :

function display() {
    $.ajax({
        type: "GET",
        url: "gestion/display.php",
        dataType : 'html',
        success : function(data){
            $('#display_ajax').html(data);
        }
    })
}
setInterval(display, 3000);

Sinon, tu peux très bien faire :

setInterval(function() {
    $.ajax({
        type: "GET",
        url: "gestion/display.php",
        dataType : 'html',
        success : function(data){
            $('#display_ajax').html(data);
        }
    })
}, 3000);