Jquery et fonction 'load'

Résolu/Fermé
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012 - 6 févr. 2012 à 11:22
Shymon Messages postés 145 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 25 novembre 2012 - 7 févr. 2012 à 00:34
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

Shymon Messages postés 145 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 25 novembre 2012 59
Modifié par Shymon le 6/02/2012 à 18:53
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
2
Shymon Messages postés 145 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 25 novembre 2012 59
6 févr. 2012 à 18:55
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 ;)
0
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012
6 févr. 2012 à 21:09
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.
0
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012
6 févr. 2012 à 21:30
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.
0
Shymon Messages postés 145 Date d'inscription samedi 9 février 2008 Statut Membre Dernière intervention 25 novembre 2012 59
6 févr. 2012 à 22:52
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
});
0
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012
6 févr. 2012 à 22:54
Je me suis renseigné sur le sujet du coup j'ai trouvé la solution a ce niveau là, merci encore.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
6 févr. 2012 à 17:53
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
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012
6 févr. 2012 à 18:47
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.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
Modifié par djflexlive le 6/02/2012 à 19:01
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maxtheirish Messages postés 23 Date d'inscription mercredi 29 décembre 2010 Statut Membre Dernière intervention 14 février 2012
6 févr. 2012 à 22:59
Merci d'avoir pris le temps de chercher, shymon m'a apporté la solution bonne soirée.
0
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 95
7 févr. 2012 à 00:27
no pb :)
0