Obtenir / extraire des données de la firebase database sans actualiser la page

Salut je voudrais de l’aide s’il vous plaît. J’apprends actuellement Ajax et Json, donc je n’ai pas beaucoup d’expérience dans ce domaine.

J’ai suivi ce didacticiel afin de récupérer les données sans actualiser la page, mais je suis inquiet à ce sujet.

Le script fonctionne bien, le seul problème que j’ai constaté est que si je clique sur l’actualisation, le chargement du contenu prend beaucoup de temps (environ 5 à 10 secondes). Dans Firebug, je vois dans la console qu’elle est continuellement contraignante car elle envoie des demandes à tout moment. Voici le code HTML

    Script PHP

     $query = "SELECT `img_id`, `image_name`, `title` FROM `images` ORDER BY `img_id` DESC LIMIT 5 "; $run = mysqli_query($connection, $query) or die(mysqli_error($connection)); $json = array(); while ($row = mysqli_fetch_array($run, MYSQLI_ASSOC)) { array_push($json, array('image_name' => $row['image_name'], 'title' => $row['title'])); } echo json_encode(array("json" => $json)); 

    et le JS

     $(document).ready(function() { refresh(); }); function refresh() { setTimeout(function() { update_content(); refresh(); }, 200); } function update_content() { $.getJSON("fetch_data.php", function(data) { $("ul#results").empty(); $.each(data.json, function() { $("ul#results").append("

  • "+this['title']+"
  • "); }); }); }

    Est-ce un problème?? Puis-je améliorer le code d’une manière ou d’une autre ?? Toute aide serait appréciée

    Pour donner quelques commentaires supplémentaires. Si $ .getJSON est directement placé dans $ (document) .ready (function ()), le contenu se charge plus rapidement, mais si des mises à jour se produisent, par exemple, le titre ne s’affichera pas sans que la page ne soit rafraîchie. Ce que je souhaite réellement réaliser, c’est chargez le contenu et si des modifications sont apscopes, affichez-les sans actualiser la page.

    Voici une autre approche de la question

     $(function() { update_content(); }); function update_content() { $.getJSON("fetch_data.php", function(data) { $("ul#results").empty(); $.each(data.json, function() { $("ul#results").append("

  • "+this['title']+"
  • "); }); setTimeout(function(){ update_content(); }, 1000); }); }

    Ici, j’ai déplacé l’appel setTimeout dans la fonction update_content () et augmenté le délai d’attente pour donner un peu plus de temps au navigateur. Personnellement, je n’appellerais pas cela à la seconde, mais c’est juste un exemple; 10 secondes ou même plus longtemps.

    Si vous ne voulez pas qu’il se déclenche à plusieurs resockets, supprimez tout le bloc setTimeout.

     $(function() { update_content(); }); function update_content() { $.getJSON("fetch_data.php", function(data) { $("ul#results").empty(); $.each(data.json, function() { $("ul#results").append("

  • "+this['title']+"
  • "); }); }); }