IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Réappliquer le code joué au chargement de la page


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Réappliquer le code joué au chargement de la page
    Bonjour à toutes et tous,

    J'utilise JQuery pour envoyer mes formulaires en Ajax et remplacer la contenu de ma page par une partie de la réponse du serveur.
    En fait le serveur ne sais pas que je veux juste une partie de la page, il me renvoie donc une page complète (header avec scripts, body avec menu et contenu..) je dois donc récupérer uniquement la partie de contenu pour écraser le contenu actuel.
    Le fonctionnement est le suivant :
    1° Utilisateur arrive sur un formulaire avec un structure de page qui contient des scripts dans le <head>, et trois <div> principales dans le <body> : #menu; #content et #footer.
    2° Utilisateur envoie le formulaire
    2.1° JQuery prend la main et envoie le formulaire via une requête Ajax
    3° Le serveur évalue le contenu et répond une page complète avec la même structure que la précédente : scripts dans le <head> et les trois <div> #menu, #content et #footer dans le <body>.
    3.1° JQuery reçois la réponse et recherche le contenu de #content pour le placer à la place du #content actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var _resp = $($(response).find("#content").html());
    					$("#content").empty();
    					$("#content").append(_resp);
    Tout fonctionne bien sauf que les scripts placés dans le <head> ne sont pas ré-appliqués sur le nouveau contenu.
    J'ai notamment un champs texte qui utilise le calendrier de JQuery. Lorsque l'utilisateur arrive sur le formulaire le calendrier fonctionne bien mais lorsque c'est la réponse du serveur qui est placée dans #content le calendier ne fonctionne plus puisque je ne passe plus dans le code situé dans l'initialisation de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(function() { // Crée le calendrier.. });
    Ma question est donc de savoir si il est possible de rejouer ce code, si il est possible de rappeler $(function() { ... }). ?

    Je pourrais biens sur après avoir reçu la réponse du serveur et l'avoir remise dans le contenu via JQuery rappeler l'initialisation du calendrier mais j'ai besoin d'un code très générique qui pourras fonctionner dans tous les cas.
    J'ai bien essayé de placer tout mon code dans une fonction initPage() que j'appelais lorsque la page était chargée et lorsque le contenu était modifié par JQuery mais cette fonction n'était jamais connue.. L'un d'entre vous à t'il une idée ?


    Merci pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,
    En fait le serveur ne sais pas que je veux juste une partie de la page
    En fait si.
    Lorsque tu lances une requête AJAX, jQuery envoie automatiquement une en-tête HTTP X-Requested-With qui te permet de savoir qu'il s'agit d'un appel AJAX et donc de filtrer la réponse renvoyée
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ok..

    Bon alors admettons que du côté serveur je vérifie la présence de cet en-tête et ne renvoie que la partie qui m'intéresse (le contenu de #content). Je ne suis pas plus avancé, j'aurais juste quelques lignes de code JQuery en moins mais au final je vais quand même faire un "$("#content").append(_response)" sur lequels mes différents "effets" et fonctions javascript ne seront pas appliquées...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bon voilà, j'ai une première solution qui me satisfait à moitié.

    J'ai placé tout le code d'affectation des effets et des fonctionnalités dans une fonction "initContent()". Ensuite lorsque la page est chargée, j'appelle cette fonction et ajoute une action sur l'événement "change" de la div #content.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $(function() {
    				initContent();
    				$("#content").bind('change', initContent);
    			});
    Ca me satisfait à moitié car je dois faire cet abonnement à l'évènement "change" dans chaque page. J'aurais aimé pouvoir le faire encore plus simplement.

    Si l'un d'entre vous sais comment appeler une fonction d'une page depuis un script externe je suis preneur.
    Je pourrais ainsi me contenter d'écrire une fonction "initContent()" dans mes pages et l'appler et ajouter l'évènement directement depuis un script externe qui est inséré dans toutes mes pages...

Discussions similaires

  1. [MySQL] Permutter entre deux codes à chaque chargement de la page
    Par partage_info dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/10/2011, 13h40
  2. Réponses: 12
    Dernier message: 24/06/2011, 12h39
  3. [Framework] Problème ajout de code avec AOP. Chargement de bean incorrect?
    Par tiliut dans le forum Spring
    Réponses: 0
    Dernier message: 22/03/2011, 14h58
  4. [XL-2003] Optimisation de code (temps de chargement au démarrage)
    Par pomdeterfrite dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 11/11/2010, 09h27
  5. [Code] Problème de chargement de *.swf
    Par RIVET Pierre dans le forum Intégration
    Réponses: 1
    Dernier message: 13/10/2007, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo