Probleme pour faire interpreter du JavaScript à une page chargée via AJAX
prozenproses
Messages postés16Date d'inscriptiondimanche 28 octobre 2007StatutMembreDernière intervention21 janvier 2009
-
3 nov. 2008 à 15:17
xanata -
6 nov. 2008 à 08:18
Bonjour,
Je m'explique : Je développe actuellement un site en AJAX, il se décompose en 2 parties.
A Gauche mon menu qui est composé de liens et lorsque je clique sur 1 de ces liens la page voulue se charge dans la partie de droite (Seule cette partie se met a jour le reste reste fixe - C'est le but d'AJAX ^^)
Jusqu'ici aucun problème tout fonctionne parfaitement sauf qu'avec 1 de mes liens je charge une page contenant du JavaScript et étant donné que cette page est chargée via AJAX le JavaScript n'est bien entendu pas interprêté !!! Donc ma question est : Comment peut on faire interpréter du JavaScript à une page chargée par AJAX ???
Si quelqu'un avait une solution pour me faire avancer car là je l'avoue je suis bloqué !!!
En vous remerciant par avance...
PS : J'espère avoir posté au bon endroit
A voir également:
Probleme pour faire interpreter du JavaScript à une page chargée via AJAX
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 3 nov. 2008 à 15:31
bonjour,
>>Comment peut on faire interpréter du JavaScript à une page chargée par AJAX ???
t'as pas du chercher bien longtemps !
problème récurent, poser de trsè nombreuses fois
primo : t'es sûr d'avoir besoin de charger du javascript avec ajax ?
ça peut servir à quoi ? c'est toujours ( ou presque ) inutile :
mettre le javascript dans la page appelante et tout est résolu !
si tu y tiens à tous prix ( mais pour moi c'est une erreur de conception )
regarde du coté de eval ( si le serveur retourne uniquement du javascript ),
ou regarde comment font les framework qui tous le proposent
ou un ch'tiot exemple ici avec GAG
vous ( tu n'es pas le seul ), essayez de réinventer le dialogue entre le serveur et javascript
pour moi ajax n'est pas là pour ça. dans le cadre d'ajax le script sur le serveur
ne devrait retourner que des données, pas un page html et encore moins du js
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 3 nov. 2008 à 15:32
Certaines personnes vont te dire que ton Javascript ne devrait pas figurer dans ta page d'appel et d'autres te diront que le but original de Ajax est de traiter des flux XML enfin bref...
Voilà une fonction qui devrait palier à ton problème :
function evalScripts(sourceHtml){
var aReturn = [];
var allScripts = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img');
var oneScript = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
var scripts = this.match(allScripts) || [];
for(var i=0; i < scripts.length; i++){
var script = scripts[i].match(oneScript) || null;
if(script) eval(script);
};
}
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 3 nov. 2008 à 15:51
Oula, voilà ce que c'est de traduire à la vas-vite :
function evalScripts(sourceHtml){
var allScripts = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'img');
var oneScript = new RegExp('<script[^>]*>([\\S\\s]*?)<\/script>', 'im');
var scripts = sourceHtml .match(allScripts) || [];
for(var i =0; i < scripts.length; i++){
var script = scripts[i].match(oneScript) || null;
if(script) eval(script);
};
}
Attention, il faut bien connaître les limitations dues à l'utilisation de la fonction eval() .
<hr size ="2" width="100%" />Projet en cours : Joof
prozenproses
Messages postés16Date d'inscriptiondimanche 28 octobre 2007StatutMembreDernière intervention21 janvier 2009 3 nov. 2008 à 16:48
Merci pour vos réponse mais mon problème n'est pas résolu ou alors je me sers mal de votre fonction.
En fait la page que j'essaie de charger est en PHP et le script JavaScripts qu'elle contient est un menu ( en onglet) codé en AJAX ( librairie prototpe) et je voudrais que ce menu soit "décrypter par AJAX".
J'avais déjà trouvé la réponse que vous m'avez donné mais pour moi ce n'est pas ce qu'il me faut, je me trompe peut être
Merci encore
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 3 nov. 2008 à 17:01
Je penses que tu as mal posé ta question qui, je te le rappelles, était :
Comment peut on faire interpréter du JavaScript à une page chargée par AJAX ???
"la page que j'essaie de charger est en PHP"
>> Qu'elle soit en Php ne change rien, le flux que tu récupères est de l'Html.
Puisque tu utilises Prototype, va jeter un œil sur la lib : http://prototypejs.org/api/ajax/options Regarde plus précisément l'option onSuccess qui est le callback d'une requête réussie.
<hr size="2" width="100%" />Projet en cours : Joof
prozenproses
Messages postés16Date d'inscriptiondimanche 28 octobre 2007StatutMembreDernière intervention21 janvier 2009 3 nov. 2008 à 17:02
Je vais être plus précis en vous montrant le code nécessaire à la "bonne" compréhension de mon attente :
_____________________________________________________________________
Exemple d'un lien de mon fichier index.php :
[ma_page_a_charger Ma page]
_____________________________________________________________________
ma_page_a_charger.php (elle ressemblerais à cela) :
PS : l'appel à prototype.js et onglet.js (script de création des mes onglets) est fait dans mon index
_____________________________________________________________________
prozenproses
Messages postés16Date d'inscriptiondimanche 28 octobre 2007StatutMembreDernière intervention21 janvier 2009 3 nov. 2008 à 17:35
ce qu'elle revoie n'est que du javascript oui mais honnetement je ne vois pas comment utilisé eval() ici ou plutot ou l'utiliser. Dans mon index.php? ou dans la page que je charge via AJAX?
prozenproses
Messages postés16Date d'inscriptiondimanche 28 octobre 2007StatutMembreDernière intervention21 janvier 2009 3 nov. 2008 à 17:50
ok merci de ton aide je m'absente je reviens je pars du taf j'ai de la route je me reconnecte après. J'essaie ce que tu ma dit et je te recontacte en conséquence encore merci
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 3 nov. 2008 à 18:39
pourquoi faire retourner ce javascript la par du php ?
ça ne sert strictement à rien !
var oOnglet = new Onglet ("calqueracine", "cssonglet");
oOnglet.addOngletUrl ("Lister", "lister_produits.php");
oOnglet.addOngletUrl ("Ajouter", "ajouter_produits.php");
oOnglet.addOngletUrl ("Modifier", "modifier_produits.php");
oOnglet.addOngletUrl ("Supprimer", "supprimer_produits.php");
oOnglet.setFocus (1);
???
met ça dans une fonction de ta page appelante !!!!
ce sera quand même plus simple, ça évitera un échange, ...
et appelle la quand tu veux !