Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > AJAX
AJAX Forum sur la programmation AJAX. Avant de poster : Cours AJAX, FAQ AJAX, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2011, 22h42   #1
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : mai 2011
Messages : 4
Points : 0
Points : 0
Par défaut 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 :
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 :
1
2
3
4
5
6
7
8
9
 
$('div1').addEvents({
    mouseenter: function(){
 
      this.innerHTML= resultat;   
      ;
},
mouseleave:function(){
...

Merci pour votre aide
dqniel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 17h47   #2
Membre éclairé
 
Homme Damien Attanasio
Développeur informatique
Inscription : février 2007
Messages : 340
Détails du profil
Informations personnelles :
Nom : Homme Damien Attanasio
Localisation : France, Hérault (Languedoc Roussillon)

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

Informations forums :
Inscription : février 2007
Messages : 340
Points : 307
Points : 307
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)
madevilts est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 14h10   #3
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 806
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 806
Points : 35 803
Points : 35 803
Citation:
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
Citation:
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.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 14h37   #4
Invité de passage
 
Homme
Inscription : mai 2011
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : mai 2011
Messages : 4
Points : 0
Points : 0
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 :
new Asset.javascript(URL, onload : function() { maFonction(); });
dqniel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h47.


 
 
 
 
Partenaires

Hébergement Web