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

AJAX Discussion :

[AJAX] Script .js dans le <head> via Ajax?


Sujet :

AJAX

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [AJAX] Script .js dans le <head> via Ajax?
    Bonjour,
    Actuellement je fais une requête xhr pour envoyer une page php dynamiquement par innerhtml dans une div, jusque là tout se passe bien.

    Mais mes scripts .js externes qui sont appelés dans le <head> de cette page php ne sont pas lancés une fois le contenu de cette page php injectée dynamiquement, alors que quand je lance la page php directement sans passer par injection innerhtml les scripts fonctionnent sur la page php...

    On m'a dit que le contenu des balises <head> ne passaient pas par ajax...
    alors j'ai essayé de mettre les scripts externes directement dans la page qui reçoit l'injection, mais les scripts ne semblent pas la prendre en compte.

    Comment resussir a appliquer ces scripts externes sur le contenu injecté dynamiquement?

    voici ma requete xhr:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var xhr = getXhr()   
    xhr.onreadystatechange = function()   
    {   
    if(xhr.readyState == 4 && xhr.status == 200)   
      {   
        resultat =(xhr.responseText);   
      }   
    }   
    xhr.open("POST","page.php",true);   
    xhr.send(null);
    et mon inner html:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $('div1').addEvents({
        mouseenter: function(){
     
          this.innerHTML= resultat;   
          ;
    },
    mouseleave:function(){
    ...

    Merci pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2007
    Messages : 340
    Points : 350
    Points
    350
    Par défaut
    En fait, tu reçois une page contenant une balise script et que tu places dans un div via le .innerHTML ?

    .innerHTML comme son nom l'indique, traite du html à l'intérieur d'une balise. Néanmoins il n'interprète pas le javascript !

    Plusieurs solutions s'offrent à toi :
    - envoyer le javascript séparément du contenu html pour ensuite faire un eval() du script
    - avoir chargé le javascript au début pour t'en servir plus tard
    - utiliser un framework qui gère ce souci (jQuery avec la méthode .html par exemple)

  3. #3
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Actuellement je fais une requête xhr pour envoyer une page php dynamiquement par innerhtml dans une div, jusque là tout se passe bien.
    Oui, jusque là, pas de problème, sauf que
    Mais mes scripts .js externes qui sont appelés dans le <head> de cette page php ne sont pas lancés une fois le contenu de cette page php injectée dynamiquement, alors que quand je lance la page php directement sans passer par injection innerhtml les scripts fonctionnent sur la page php...
    là, ça pose un gros problème : tu ne peux et ne dois pas insérer une page complète dans une div ! L'utilisation d'AJAX dans ce cas implique de ne renvoyer qu'une portion de HTML qui une fois insérée dans le document gardera celui-ci valide.

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui j'ai corrigé ca, je fais appel aux scripts directement dans la page qui contient la div réceptrice désormais.

    Le problème est que je ne peux pas utiliser de Jquery, car j'utilise déjà du mootools pour l'event mouseenter et aussi pour le lightbox (script que je voudrais d'ailleurs charger)...
    On m'a parlé des assets sinon pour faire appel aux scripts, et de les charger ensuite.
    mais je ne sais pas trop comment le faire ni si ca marchera...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Asset.javascript(URL, onload : function() { maFonction(); });

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/12/2009, 13h28
  2. [Prototype] Appel fonction JavaScript dans réponse serveur via ajax.request
    Par philippe_jmh dans le forum Bibliothèques & Frameworks
    Réponses: 11
    Dernier message: 22/06/2008, 02h43
  3. Non exécution du script js dans page inclue via ajax
    Par clara1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/05/2008, 11h10
  4. [AJAX] possible de rafraichir du CSS dans la page via Ajax?
    Par freeriders88 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2007, 10h39
  5. charger donnees dans un datatable via ajax
    Par ouedmouss dans le forum JSF
    Réponses: 4
    Dernier message: 07/08/2006, 16h31

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