Partage
  • Partager sur Facebook
  • Partager sur Twitter

Actualisation d'une page automatiquement

    10 janvier 2018 à 22:56:54

    Bonsoir,

    Je m'explique,

    J'affiche dans une page un iframe avec une autre page à l'intérieur,

    j'ai effectivement trouvé comment rafraichir une page automatiquement toutes les x secondes,

    ce que je souhaiterai c'est que lorsque j'upload le fichier sur le serveur (qui est donc plus récent que le précedent), l'utilisateur connecté à la page au moment de l'upload ait un refresh automatique avec les nouvelles données, à la manière d'un tchat, si pas de nouveau message la page reste tel quel, si un nouveau message est posté, alors un refresh se produit.

    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      11 janvier 2018 à 10:21:34

      Salut, je te conseilles de regarder du côté de Jquery -> Ajax

      • Partager sur Facebook
      • Partager sur Twitter
        11 janvier 2018 à 10:38:56

        Bonjour et merci pour cette réponse,

        J'ai bien regarder de ce coté la éffectivement mais je trouve pas vraiment mon bonheur, pense tu à quelque chose en particulier ?

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          11 janvier 2018 à 11:07:29

          Pour envoyer une image par ajax soit tu passes par un plugin soit tu écris toi même le code avec un XMLHttpRequest

          Ce code est absolument pas la solution parfaite mais une solution:

          function ajax (a) {
          	var xhr = null, c;
          	if (window.ActiveXObject) {
          		try {
          			xhr = new ActiveXObject("Msxml2.XMLHTTP");
          		} catch (e) {
          			xhr = new ActiveXObject("Microsoft.XMLHTTP");
          		}
          	} else {
          		xhr = new XMLHttpRequest();
          	}
          	a.method = a.method || "GET";
          	a.success = a.success || function () { };
          	a.error = a.error || function () { alert("Error")};
          	if (a.method.match(/post/ig)) {
          		var form = new FormData();
          		for (f in a.data) {
          			form.append(f, a.data[f]);
          		}
          		c = form;
          	} else {
          		var e = '';
          		for (f in a.data) {
          			e += a.data[f] + '=' + f + '&';
          		}
          		a.url += e.substr(0, e.length - 1);
          	}
          	xhr.open(a.method, a.url, true);
          	(a.XMLHttpRequest == void 0 || a.XMLHttpRequest) && xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
          	xhr.onreadystatechange = function () {
          		if (xhr.readyState == 4 && xhr.status == 200) {//si c'est ok
          			var k = xhr.responseText;
          			a.success(k);
          		} else if (xhr.readyState == 4 && xhr.status != 200) {// si c'est ko
          			a.error(xhr.responseText, xhr.status);
          		}
          	};
          	xhr.send(c == undefined || !c || c == null ? null : c));
          }
          		
          function SendFile() {
          	var input = document.getElementById("id_de_l'input");
          	ajax({
          		method: "POST",
          		url: "la_page_cible.php",
          		data: {
          			fichier: input.files[0] //[0] car il peut en avoir plusieurs si tu es en multi
          		},
          		success: function(response) {
          			//ton action
          		}
          	})
          }

          Je te laisse de regarder de ce côté la après: https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest

          -
          Edité par Gh0stFive 11 janvier 2018 à 11:08:28

          • Partager sur Facebook
          • Partager sur Twitter
            11 janvier 2018 à 11:08:17

            Hello,

            Gh0stFive suggère l'utilisation d'un setInterval() qui va envoyer regulièrement une requete ajax avec fetch() (on va éviter jquery juste pour ca) pour vérifier si un nouveau fichier a été uploadé suivi d'un location.reload() pour recharger la page. Mais tu peux modifier le DOM pour ne modifier que ce qui doit être changé dans la page plutôt que faire un refresh.

            • Partager sur Facebook
            • Partager sur Twitter
            Un petit +1 si je vous ai aidé est toujours appréciable :).
              11 janvier 2018 à 11:15:20

              Merci Krogoth,

              Si je te demande de me montrer un morceau de code, pense tu que ce serai possible ?

              En gros la source est un fichier html

              Merci

              • Partager sur Facebook
              • Partager sur Twitter
                11 janvier 2018 à 11:50:15

                Ces cours:

                https://openclassrooms.com/courses/apprenez-a-coder-avec-javascript

                https://openclassrooms.com/courses/creez-des-pages-web-interactives-avec-javascript

                Plus les liens que j'ai donné devrait suffire.

                -
                Edité par Krogoth 11 janvier 2018 à 11:51:15

                • Partager sur Facebook
                • Partager sur Twitter
                Un petit +1 si je vous ai aidé est toujours appréciable :).
                  11 janvier 2018 à 12:39:09

                  J'essaye ca

                  Merci en tout cas

                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 janvier 2018 à 16:04:26

                    Bonjour, 

                    Si la transmission des données se fait du serveur vers le client, passer par Ajax est pas forcément une bonne idée. Parce que ça fait des requêtes pour rien et ça peut faire péter un serveur s'il y a trop de clients connectés dessus en même temps. 

                    Une autre solution, qui est la "meilleure" est de passer par les Websockets. Avec ça, le serveur peut envoyer des données au client sans que le client ne fasse de demandes toutes les X secondes. 

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 janvier 2018 à 19:54:00

                      @Krogoth : J'ai lu les deux cours, j'ai plus ou moins compris même si quelques petit point reste flou mais je ne sais pas comment adapté cela à mon cas. Juste pour être sur que je me suis bien expliqué : Sur une page, je charge avec une iframe une autre page (html et non un texte ou une image), et je souhaite que lorsque je met à jour cette page via FTP par exemple, alors le contenu se mette dynamiquement à jour si un utilisateur est présent sur la dite page au moment de l'upload.

                      Merci

                      -
                      Edité par MichaëlSala1 11 janvier 2018 à 21:53:17

                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 janvier 2018 à 12:39:55

                        Est-ce que le nom de domaine de ton iframe est le même que celui du site "appellant"?
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Un petit +1 si je vous ai aidé est toujours appréciable :).
                          15 janvier 2018 à 15:14:42

                          oui, désolé pour la réponse tardive

                          • Partager sur Facebook
                          • Partager sur Twitter
                            15 janvier 2018 à 16:40:33

                            cernkor a écrit:

                            Bonjour, 

                            Si la transmission des données se fait du serveur vers le client, passer par Ajax est pas forcément une bonne idée. Parce que ça fait des requêtes pour rien et ça peut faire péter un serveur s'il y a trop de clients connectés dessus en même temps. 

                            Une autre solution, qui est la "meilleure" est de passer par les Websockets. Avec ça, le serveur peut envoyer des données au client sans que le client ne fasse de demandes toutes les X secondes. 


                            Vu le niveau de Michaël ca risque d'être long à expliquer les websockets...
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Un petit +1 si je vous ai aidé est toujours appréciable :).
                              15 janvier 2018 à 17:07:31

                              Le nom de domaine est bien le même Krogoth !
                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 janvier 2018 à 15:31:50

                                J'ai trouvé la solution si ca peut aider un jour quelqu'un :

                                <script src="http://code.jquery.com/jquery-latest.js"></script>
                                
                                <script>
                                
                                 $(document).ready(function() {
                                
                                 //$("#test").load("test.php");
                                
                                   var refreshId = setInterval(function() {
                                
                                      $("#test1").load('test.php?randval='+ Math.random());
                                
                                   }, 2000);
                                
                                   $.ajaxSetup({ cache: false });
                                
                                });
                                
                                </script>
                                
                                <div id="test1"></div>



                                -
                                Edité par MichaëlSala1 16 janvier 2018 à 15:32:39

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Actualisation d'une page automatiquement

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown