roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 2011
-
4 mars 2008 à 14:07
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
7 mars 2008 à 14:54
Bonjour tout le monde,
Tout d'abord, merci de me lire!
Bon ensuite, pour ce qui m'intéresse : j’ai une application intranet, donc je peut utiliser le javascript à loisir, il n’y à pas de problèmes ! Dans le menu cette application, je charge une page qui contient une liste extraite de ma base de données. Mais ce que je veut aussi, c’est qu’il y ai une fonction javascript qui cache certaines lignes (chose que je pourrais faire en php, mais je préfère le javascript). Ma fonction JS, je la déclarais au chargement de la page lorsque j’incluais ma page avec un include (donc page blanche en attente de l’affichage..). Mais maintenant, avec l’inclusion en AJAX, ma fonction JS ne s’exécute plus. Même lorsque je la met directement dans le code de la page html…
Savez vous pourquoi ? Auriez-vous une idée de comment faire ? Ou dois-je abandonner ma fonction JS pour faire en php ?
Merci beaucoup d'avance, j'espère avoir été clair, sinon, n'hésitez pas à me poser des questions
Merci encore!
un site qui s'ameliore de jour en jour
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 mars 2008 à 09:34
salut ju_p,
ça peut effectivement le faire...
mais si le php retourne une page html "complète", avec plusieurs function javascript.... ?
<hr /> Cordialement Bul
cs_ju_p
Messages postés22Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention11 septembre 2008 5 mars 2008 à 09:44
Bonjour bultez,
Les pages html (ou php) chargée via ajax n'interpretent pas le code javascript, c'est le role d'eval qui le fait a la perfection.
J'ai eu, il y a qques temps, le même pb que roro 596500 et eval() l'a solutionné.
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 5 mars 2008 à 12:06
Bonjour,
Tout d'abord, merci d'avoir répondu et donné des idées!
Je dois mal m'y prendre, mais je n'y arrive pas avec le fameux eval().
Voilà ma fonction Ajax :
//Fonction AJAX qui ouvre une page dans la balise "CorpsPage" de la page principale
function ChargementPage(url)
{
var url = "Test/TestAjax.html";
var xhr_object = null;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiée le contenu retourné par le fichier
document.getElementById('CorpsPage').innerHTML = eval('xhr_object.responseText');
}
}
// dans le cas du get
xhr_object.send(null);
alert("Chargement fait!");
}
Aurais-je fais une erreur? Un oubli?
Car le alert("Test du boudin!"); dans les pages chargée par l'Ajax ne s'executent toujours pas...
J'ai farfouiné sur le net, et il y a un site qui dit qu'il faut mettre window.eval(), ou faire un var global = this puis global.eval()
Le site en question Merci encore d'avance!
un site qui s'ameliore de jour en jour
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 5 mars 2008 à 13:15
Oui, pour que ça marche, il faut que ça ne soit un fichier avec QUE du javascript, sinon il n'affiche rien... Donc moi, je cherche une solution entre les deux^^.
Peut-être charger ma page php, puis charger ma page Javascript.
Je vais essayer...
un site qui s'ameliore de jour en jour
cs_ju_p
Messages postés22Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention11 septembre 2008 5 mars 2008 à 13:34
Voici la fonction que j'utilise qui me permet de charger une page via ajax :
function load_page(select,Conteneur) {
var xhr2 = new_xhr();//On crée un nouvel objet XMLHttpRequest
if(select!=""){
xhr2.onreadystatechange = function(){
if ( xhr2.readyState == 4 ){//Actions executées une fois le chargement fini
if(xhr2.status != 200){//Message si il se produit une erreur
document.getElementById(Conteneur).innerHTML ="Error code " + xhr2.status;
} else {//On met le contenu du fichier externe dans la div
document.getElementById(Conteneur).innerHTML = eval('xhr2.responseText');
}
} else {//Message affiché pendant le chargement
document.getElementById(Conteneur).innerHTML = "Chargement en cours ...
";
}
}
xhr2.open("GET", select, true);//Appel du fichier externe
xhr2.send(null);
}else{
document.getElementById(Conteneur).innerHTML = "";
}
}
La page qui est chargé est une page php contenant une ligne de javascript (dans mon cas, il s'agit d'une redirection de page : window.location.href ........).
Je ne sais que dire de plus. Moi ca marche parfaitement bien tel que c'est écrit.
cs_ju_p
Messages postés22Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention11 septembre 2008 5 mars 2008 à 13:46
En relisant mon précédent message, il me semble que cela peut préter à confusion : j'ai écrit que ma page chargée via ajax ne contient qu'une ligne de javascript.
C'est là que je me suis mal éxprimée : c'est en fait une page php normale( html + php) avec en plus une ligne de javascript.
Par contre, il ne faut pas oublier de mettre les header adéquats dans la parge chargée.
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 5 mars 2008 à 14:19
Chez moi, ça ne marche pas. Ma page appelée est une page HTML, avec du Javascript dedans :
<html>
<head>
<title>Balise1</title>
</head>
<center>Page de la première balise
</center>
<script language="Javascript">
<!--
alert("Test du boudin!");
-->
</script>
</html>
Donc voilà quoi.
Et puis, il faut dire que "new-xhr()" est une fonction qui créé l'objet XMLTHttpRequest.
Enfin, il commence à saouler l'Ajax! Je pense aller faire une lessive...
Merci en tous cas à toi ju_p! T'a un lien avec Alain (Juppé^^)?
Enfin, je continue tout de même à tester malgré tout...
Merci encore!
un site qui s'ameliore de jour en jour
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 mars 2008 à 15:01
eval ne fonctionne que si Javascript pur, ce que je pensais....
exemple ?
la page principale :
<HTML Lang= "fr">
<script type="text/javascript">
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function xmlhttp() //~~ XMLHTTP ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ var x;
try { x = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { x = new XMLHttpRequest(); }
catch (e) { x=false; }
}
}
return x;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function appel(app) //~~ Appel ~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ var xml = xmlhttp();
if(!xml)
{ alert("XmlHttpRequest non support?; }
else { xml.onreadystatechange = function()
{ if(xml.readyState == 4)
{ if (xml.status == 200)
{ eval(xml.responseText); }
else { alert("problème xmlhttprequest"); }
}
}
try { netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess'); }
catch(erreur) { }
xml.open("GET", "Executer JS avec Ajax"+app+".php", true);
xml.setRequestHeader("Content-type","application/x-www-form-urlencoded");
try { xml.send(); }
catch (e) { }
}
}
</script>
javascript pur
javascript et HTML
</html>
le "php", js pur "Executer JS avec Ajaxpur.php"
alert("c'est ok");
ça baigne....
le php, html +js "Executer JS avec Ajaxhtm.php"
<html>
<script type ="text/javascript">
alert("c'est ok");
</script>
</html>
erreur sur la ligne eval. ce qui me semble normal
( <html> dans du javascript, ça ne lui plait pas ... )
commets-je une erreur ? il manque quelque chose dans "Executer JS avec Ajaxhtm.php"
perso ce que je vois, si c'est une page html qui est renvoyée,
c'est dans extraire le js ( substring, expression régulières, dom ... ) de la page
créer une fonction js en dynamique et l'ex"cuter
ou autres solutions....
franchement.... comme généralement c'est totalement inutile,
je m'en passerai ....
dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDernière intervention 7 mars 2012 5 mars 2008 à 17:12
Salut,
j'ai un peu le même problème que roro, je souhaite utiliser du code JS que j'ai récupéré via une requête Ajax.
J'ai essayé ta fonction load_page, elle marche très bien pour exécuter du code JS.
Par contre j'ai essayé de définir une fonction JS (ce qui m'intéresse beaucoup plus), mais ca ne marche pas. Voici le code récupéré avec Ajax :
<script type="text/javascript">
function test()
{
alert("ca marcheeeeeeee");
}
</script>
[javascript:test() Ya du code HTML !]
Lorsque je clique sur le liens, rien ne se passe.
Se pourrait-il que le navigateur cherche la fonction JS dans le code source de la page ? Ca expliquerait que ça ne marche pas, car lorsque l'on affiche le code source de la page, il n'y a que le code source d'origine, sans les modifs faites avec Ajax, et donc sans ma fonction test()...
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 5 mars 2008 à 18:49
eval ne fonctionnera que s'il n'y a que du javascript dans la reponse
sinon, ça va "planter" sur les balises html.
( eval est une instruction javascript qui traite exclusivement du javascript )
regarde l'exemple que j'ai mis xtremDuke.
la seule solution (?) c'est de traiter/d'extraire le javascript dans la réponse
( dom ou autres, comme ce qu'à proposé ju_p par exemple,
pas sûr d'ailleurs, en l'état, que ça fonctionne avec tous les navigateurs )
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 mars 2008 à 07:31
bien entendu dmk04. c'est un eval, pas autre chose.
les fonctions faudrait les créer en dynamique.
vous voulez mon avis ?
vous êtes en train de vouloir refaire, avec ajax, la même chose
que se qui se passe en envoyant un formulaire.... envoyer donc un formulaire.
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 6 mars 2008 à 08:33
Oui c'est vrai que ce que je veut faire c'est faisable avec un formulaire, mais je voulais garder la structure autour lors du chargement de la page(moins stressant pour l'utilisateur...). Et je ne veux pas utiliser les frames^^.
Enfin, je fais pour que le temps soit le plus petit possible entre les changements.
Merci pour ces réponses bien matinales!
un site qui s'ameliore de jour en jour
roro59650
Messages postés99Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention28 juillet 20111 6 mars 2008 à 08:39
Il n'empèche que la fonction de ju_p marche très bien sur IE, et c'est ce qui m'interessait. Mais maintenant que j'ai tout prévu autrement... Mais bon, je lui met réponse acceptée!
un site qui s'ameliore de jour en jour
dmk04
Messages postés206Date d'inscriptionsamedi 29 octobre 2005StatutMembreDernière intervention 7 mars 2012 6 mars 2008 à 18:41
"les fonctions faudrait les créer en dynamique.", c'est à dire ?
Sinon, vu que les fonction que je crée n'ont que 2 ou 3 lignes, je vais y entrer en "dur" dans le lien, se sera pas très propre, mais ça devrait marcher je pense.
XtremDuke
Messages postés626Date d'inscriptionsamedi 28 septembre 2002StatutMembreDernière intervention18 mai 20094 7 mars 2008 à 14:53
Apres , si tu as du code Html ds ton flux, je te conseilles de fouiller ds des frameworks tels que 'prototype' et de voir comment ils se débrouillent pour extraire uniquement le JS (d'ailleur c'est tres instructif)
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 7 mars 2008 à 14:54
Bien sûr XtremDuke, tu as parfaitement raison, et comme ça : ça marcherait,
même si c'est disons, curieux, de faire comme ça...
( ce n'est que mon avis ! )
en même temps ce qui était reçu :
<script type="text/javascript">
function test()
{
alert("ca marcheeeeeeee");
}
</script>
[javascript:test() Ya du code HTML !]