Jquery et fonction 'load'

Résolu
Bonjour,

En Jquery, je charge une div 'corps' avec des pages PHP differentes lorsque l'on clique sur l'un des boutons de mon menu :

$('#btnMenu').click(function(){
        $('#corps').load('page.php');
});

J'aimerais savoir si il est possible de recharger ma div 'corps' avec la même page (ou le même code de la page) qui est actuellement chargé, en gardant le code PHP de la page et en restant dynamique (je ne souhaite pas faire une fonction différente pour chaque page mais plutôt une fonction qui enveloppe toute mes pages).

Si je ne suis pas assez clair je reste a disposition pour de plus amples informations.

5 réponses

  1. Si j'ai bien compris, il faudrait que tu stockes quelle page PHP est chargée dans la div pour pouvoir la rafraichir. un truc comme ça :

    // la fonction de chargement 
    $('#btnMenu').click(function(){ 
            var pagePHP = 'ma-page-PHP-à-charger.php'; 
            $('#corps').attr( 'page' ,  pagePHP ); 
            $('#corps').load( pagePHP ); 
    }); 
    
    // la fonction de rafraichissement 
    $('#btnRafraichir').click(function(){ 
            var pagePHP = $('#corps').attr( 'page'); 
            $('#corps').load( pagePHP ); 
    }); 
    
    


    ça te convient ?

    Simon
    1. fait aussi gaffe à ce que le navigateur ne garde pas en cache la réponse à la requête Ajax (comme sous IE par exemple). Sinon ça ne sert plus à rien ;)
    2. Parfait ! c'est exactement ce qu'il me fallait, néanmoins pour la question du cache je ne suis pas certain d'identifier le problème dont tu me parle et je t'avouerais que je ne m'y connais pas vraiment pour la gestion du cache.
    3. Si tu pouvais m'éclairer sur ce problème sa serait vraiment sympa car les 3/4 des utilisateurs de mon application seront sur IE.
    4. La fonction "load" de jQuery permet de faire une requête vers le serveur et de recevoir la réponse (en l'occurrence, le contenu de "corps"). Mais sous IE par exemple, les réponses aux requêtes sont mises en cache, il ne s'embête pas à aller chercher une réponse pour une requête déjà effectuée.
      Ce qui veut dire que si tu fait deux fois la même requête, tu aura deux fois la même réponse même si la page PHP à changée entre temps ... pas cool pour un rafraichissement !

      Un moyen d'éviter ça est de mettre ce code avant l'exécution de "load" :
      $.ajaxSetup ({
          cache: false
      });
      
    5. Je me suis renseigné sur le sujet du coup j'ai trouvé la solution a ce niveau là, merci encore.
  2. J'ai du mal à comprendre mais tu veux simplement changer (remplacer) le contenu de #corps à chaque click des boutons du menu OU rajouter à chaque click du contenu à #corps ?
    1. Concrètement, sans parler de clique, je souhaite avoir une fonction qui va me "rafraichir" ma div #corps (donc en gros remplacer la page chargée par la même) sans que j'ai besoin de savoir quel page est actuellement chargée.
      Comme le bouton actualiser du navigateur mais la c'est pour actualiser ma div #corps.
      1. Si tu veux un refresh automatique je te dirais :

        function refresh_auto() { 
        $("#corps").html("").load("page.php"); 
        } 
        setInterval("refresh_auto()", 2000); // pour un refresh à 2sec 
        

        Google est ton ami !
        1. Merci d'avoir pris le temps de chercher, shymon m'a apporté la solution bonne soirée.
          1. no pb :)