A voir également:
- Script ajax
- Script vidéo youtube - Guide
- Ghost script - Télécharger - Polices de caractères
- Microsoft activation script - Accueil - Windows
- Script bat - Guide
- Executeur de script - Télécharger - Édition & Programmation
18 réponses
Je suis dans le meme cas avec un upload d'image via une iframe :
En mettant :
Ca ne marche pas, le script ne s'execute pas
Cependant si on met simplement
Le script s'execute, ca marche...
Allez savoir pourquoi... je me penche d'ailleur sur cette question, et si je trouve la reponse je vous le ferai savoir
En mettant :
echo<script type=\"text/javascript\">function...</script>;
Ca ne marche pas, le script ne s'execute pas
Cependant si on met simplement
echo<script>function...</script>;
Le script s'execute, ca marche...
Allez savoir pourquoi... je me penche d'ailleur sur cette question, et si je trouve la reponse je vous le ferai savoir
Moi j'ai trouver un truc simpa , mais qui ne s'applique pas à tout les cas.
Selon ce que renvoi la requete SQL , on met des div avec des valeurs dedans
exemple <div id="reponse1">1990 </div>
On appele une fonction javascript chargé avec la page (et non pas l'appel ajax)
et dans cette fonction javascript on récupère avec le DOM la valeur de la div
document.getElement...
Le seul soucis c'est votre facon d'appeler le javascript (onclick,onmouseover)
Ou sinon pour tout le temps l'appeler , placer un onfocus sur le body (bouhhh pas propre mais en meme temps faire du javascript après de l'Ajax c'est pas propre !)
Et vous mettre une div en style="none" avec comme valeur 0 , et lorsque qu'on récupère 0 dans le javascript on n'execute pas la foction.
Qu'en pensez vous ?
Selon ce que renvoi la requete SQL , on met des div avec des valeurs dedans
exemple <div id="reponse1">1990 </div>
On appele une fonction javascript chargé avec la page (et non pas l'appel ajax)
et dans cette fonction javascript on récupère avec le DOM la valeur de la div
document.getElement...
Le seul soucis c'est votre facon d'appeler le javascript (onclick,onmouseover)
Ou sinon pour tout le temps l'appeler , placer un onfocus sur le body (bouhhh pas propre mais en meme temps faire du javascript après de l'Ajax c'est pas propre !)
Et vous mettre une div en style="none" avec comme valeur 0 , et lorsque qu'on récupère 0 dans le javascript on n'execute pas la foction.
Qu'en pensez vous ?
Bonjour (ou bonsoir^^)
si j'ai bien compris, tu veux éxecuter une fonction javascript depuis la page de callback en PHP (retournée par ajax)?
C'est vrai que ce n'est pas possible ta page de callback est déja éxecutée avant qu'ajax ne la retourne.
Je suis dans le même problème que dois car je veux executer une fonction JS selon la réponse ajax, j'ai un peu cherché sur le net et j'ai trouvé un début de solution que je trouve pas mal du tout :
typiquement tu récuperes ta requette de cette manière :
document.getElementById(id_div).innerHTML = xhr.responseText;
or si t'écris du javascript, et que t'affiches responseText, t'auras la fonction js écrite, ou qui ne s'execute pas.
Mais rien ne t'empeches d'utiliser la fonction eval(); directement apres la récupération de ta requette car t'es toujours dans l 'exécution du script.
Exemple :
ton script PHP:
<?php
header('Content-Type: text/html; charset=ISO-8859-15');
$test = "texte";
echo 'alert("'.$test.'");';
?>
ton script JS (lors de la récupération de la requette) :
...
eval(xhr.responseText);
...
Avec bien sur la variable xhr définie etc..
En gros la fonction eval(); t'éxecutes la chaine de son argument en JS.
Cette méthode fonctionne mais je suis ouvert à toute autre idée ;)
si j'ai bien compris, tu veux éxecuter une fonction javascript depuis la page de callback en PHP (retournée par ajax)?
C'est vrai que ce n'est pas possible ta page de callback est déja éxecutée avant qu'ajax ne la retourne.
Je suis dans le même problème que dois car je veux executer une fonction JS selon la réponse ajax, j'ai un peu cherché sur le net et j'ai trouvé un début de solution que je trouve pas mal du tout :
typiquement tu récuperes ta requette de cette manière :
document.getElementById(id_div).innerHTML = xhr.responseText;
or si t'écris du javascript, et que t'affiches responseText, t'auras la fonction js écrite, ou qui ne s'execute pas.
Mais rien ne t'empeches d'utiliser la fonction eval(); directement apres la récupération de ta requette car t'es toujours dans l 'exécution du script.
Exemple :
ton script PHP:
<?php
header('Content-Type: text/html; charset=ISO-8859-15');
$test = "texte";
echo 'alert("'.$test.'");';
?>
ton script JS (lors de la récupération de la requette) :
...
eval(xhr.responseText);
...
Avec bien sur la variable xhr définie etc..
En gros la fonction eval(); t'éxecutes la chaine de son argument en JS.
Cette méthode fonctionne mais je suis ouvert à toute autre idée ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yep,
je sais que j'arrive un peu tard mais, après mainte galères j'ai trouvé la solution à une partie du problème.
j'avais besoin de faire exécuter un script js sur une page appelée en ajax (album photo sur un liste de résultats de recherche au click sur la photo de l'annonce monté avec galleria)
j'ai donc utilisé la technique suivante :
dans mon header de page j'appelle mon jquery ainsi que mon script galleria.js
au click sur une photo, je déclenche une fonction ajax en passant en paramètre l'id de l'annonce.
j'exécute ma raquette ajax et fais afficher mon div avec la galerie photo.
dans ma fonction ajax, juste après la fonction d'affichage de mon div, je colle mon code js qui doit s'exécuter sur la page générée par ajax...
petit exemple ci dessous
je sais que j'arrive un peu tard mais, après mainte galères j'ai trouvé la solution à une partie du problème.
j'avais besoin de faire exécuter un script js sur une page appelée en ajax (album photo sur un liste de résultats de recherche au click sur la photo de l'annonce monté avec galleria)
j'ai donc utilisé la technique suivante :
dans mon header de page j'appelle mon jquery ainsi que mon script galleria.js
au click sur une photo, je déclenche une fonction ajax en passant en paramètre l'id de l'annonce.
j'exécute ma raquette ajax et fais afficher mon div avec la galerie photo.
dans ma fonction ajax, juste après la fonction d'affichage de mon div, je colle mon code js qui doit s'exécuter sur la page générée par ajax...
petit exemple ci dessous
function albumPhoto(id){ creerRequete(); var url = 'album.php?id_annonce='+id; requete.open('GET', url, true); requete.onreadystatechange = function() { if(requete.readyState == 4) { if(requete.status == 200) { // le div ou doit s'affiche ma réponse var leDiv2 = document.getElementById('galleriaSupport'); // ma page générée en ajax var reponse = requete.responseText; // affichage de la réponse dans mon div leDiv2.innerHTML = reponse; // mon code js à exécuter sur ma page générée Galleria.loadTheme('xprod/js/src/themes/classic/galleria.classic.js'); // run galleria and add some options $('#galleria').galleria({ image_crop: true, // crop all images to fit thumb_crop: true, // crop all thumbnails to fit transition: 'fade', // crossfade photos transition_speed: 500, // slow down the crossfade data_config: function(img) { // will extract and return image captions from the source: return { title: $(img).parent().next('strong').html(), description: $(img).parent().next('strong').next().html() }; }, }); } } }; requete.send(null); }
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 janv. 2009 à 18:41
10 janv. 2009 à 18:41
Bonsoir,
pourquoi vouloir absolument avoir un script JS dans la réponse php à la requette Ajax
le plus simple c'est de mettra dans la fonction Ajax dans sa partie traitement de la réponse une action javscript
par ex si le script php repond A --> on fait une action jS 1
si le script repond B --> on fait une action JS 2
etc..
pourquoi vouloir absolument avoir un script JS dans la réponse php à la requette Ajax
le plus simple c'est de mettra dans la fonction Ajax dans sa partie traitement de la réponse une action javscript
par ex si le script php repond A --> on fait une action jS 1
si le script repond B --> on fait une action JS 2
etc..
Salut!
Je pense que d'éxecuter un script JS en fonction de la réponse PHP n'est peut être pas le meilleur moyen :
il faudrait en effet prévoir dans le script qui gere les requettes ajax, toutes les fonctions JS en fonction de la réponse PHP, alors qu'avec eval();, il suffit d'utiliser cette fonction une seule fois dans la partie AJAX et de ne plus s'en soucier !
Apres libre à nous d'écrire de retourner du JS , je trouve que c'est 2 fois moins de travail !
Je pense que d'éxecuter un script JS en fonction de la réponse PHP n'est peut être pas le meilleur moyen :
il faudrait en effet prévoir dans le script qui gere les requettes ajax, toutes les fonctions JS en fonction de la réponse PHP, alors qu'avec eval();, il suffit d'utiliser cette fonction une seule fois dans la partie AJAX et de ne plus s'en soucier !
Apres libre à nous d'écrire de retourner du JS , je trouve que c'est 2 fois moins de travail !
IpIpIpIpOne
Messages postés
436
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
24 mai 2009
116
19 févr. 2009 à 01:05
19 févr. 2009 à 01:05
Tout est possible ...
Voici un code pour séparer le javascript du texte et l'exécuter. Le javascript doit être placé entre des balises '<script></script>' (ou autres ...)
----
var texte="C'est <script>alert('js 1');</script>super <script>alert('js 2');</script>AJAX !";
//var texte=xhr.responseText;
var scripts="";
while(texte.indexOf('<script>')!==-1){
var provisoire=texte.substr(texte.indexOf('<script>')+8);
scripts+=provisoire.substr(0,provisoire.indexOf('</script>'));
texte=texte.substr(0,texte.indexOf('<script>'))+texte.substr(texte.indexOf('</script>')+9);
}
eval(scripts);
alert(texte);
----
Résultat -> 3 alert : "js 1", "js 2", "C'est super AJAX !"
----
Cordialement,
IpIpIpIpOne
Voici un code pour séparer le javascript du texte et l'exécuter. Le javascript doit être placé entre des balises '<script></script>' (ou autres ...)
----
var texte="C'est <script>alert('js 1');</script>super <script>alert('js 2');</script>AJAX !";
//var texte=xhr.responseText;
var scripts="";
while(texte.indexOf('<script>')!==-1){
var provisoire=texte.substr(texte.indexOf('<script>')+8);
scripts+=provisoire.substr(0,provisoire.indexOf('</script>'));
texte=texte.substr(0,texte.indexOf('<script>'))+texte.substr(texte.indexOf('</script>')+9);
}
eval(scripts);
alert(texte);
----
Résultat -> 3 alert : "js 1", "js 2", "C'est super AJAX !"
----
Cordialement,
IpIpIpIpOne
moi j ai pense avoir le meme probleme et j ai pas mal chercher sans succse
j explique :
j ai une page qui avec ajax.udapter adapte un div en fonction d un formulaire
elle appel donc une page php
=> j ai donc ma liste qui s affiche en fonction des variable envoyé en post
mais sur cette meme page j ai une pagination : donc ma question est la suivante :
comment faire fonctionner cette pagination alors que le contenu de la page php est deja charger dans la nouvelle page en ajax biensur??
merci a bientot jespere,, : )
j explique :
j ai une page qui avec ajax.udapter adapte un div en fonction d un formulaire
elle appel donc une page php
=> j ai donc ma liste qui s affiche en fonction des variable envoyé en post
mais sur cette meme page j ai une pagination : donc ma question est la suivante :
comment faire fonctionner cette pagination alors que le contenu de la page php est deja charger dans la nouvelle page en ajax biensur??
merci a bientot jespere,, : )
Salut, j'espere ne pas venir trop tard,
alors moi ce que je fais et je pense que c'est ce qu'il ya a faire, il faut appeller ta fonction dans un echo
exemple:
tu mets ça dans la page appelé par ajax et c'est ok
moi ce que je fais aussi, je mets mon script dans ma page principale et je l'appelle dans la page chargé par ajax
par exemple si dans ma page principale j'ai un script du genre:
dans ta page appelée par ajax tu fais :
donne moi des nouvelles
alors moi ce que je fais et je pense que c'est ce qu'il ya a faire, il faut appeller ta fonction dans un echo
exemple:
<? echo ' <script language="javascript" type="text/javascript"> alert("ça marche super"); </script>' ; ?> <? } ?>
tu mets ça dans la page appelé par ajax et c'est ok
moi ce que je fais aussi, je mets mon script dans ma page principale et je l'appelle dans la page chargé par ajax
par exemple si dans ma page principale j'ai un script du genre:
<script language="javascript" type="text/javascript"> function ecrire(){ alert("ça marche super"); } </script>
dans ta page appelée par ajax tu fais :
<? echo ' <script language="javascript" type="text/javascript"> ecrire(); </script>' ; ?> <? } ?>
donne moi des nouvelles
anatolekadel
Messages postés
102
Date d'inscription
jeudi 26 mai 2011
Statut
Membre
Dernière intervention
18 novembre 2011
3
26 oct. 2011 à 19:15
26 oct. 2011 à 19:15
Bonjour, comme beaucoup je suis confronté au même problème que vous.
J'aimerai exécuter un script JavaScript généré par une page PHP appelée par AJAX.
Donc, j'ai pris le même script que Jives69. Mais ça ne marche pas, je poste donc ici mon code pour voir si vous pourrez trouver d'où vient l'erreur.
Mon code JavaScript qui affiche le résultat de l'appel AJAX:
//url, c'est url de la page PHP et cadre, c'est la div où j'aimerai que soit placé le résultat
L'affichage s'effectue bien, c'est juste l'exécution du JS.
Et mon code JS qui est transmis par AJAX.
Alors ? Où ais-je commis une faute ?
J'aimerai exécuter un script JavaScript généré par une page PHP appelée par AJAX.
Donc, j'ai pris le même script que Jives69. Mais ça ne marche pas, je poste donc ici mon code pour voir si vous pourrez trouver d'où vient l'erreur.
Mon code JavaScript qui affiche le résultat de l'appel AJAX:
//url, c'est url de la page PHP et cadre, c'est la div où j'aimerai que soit placé le résultat
function requestGET(url,cadre) { var XHR = getXMLHttpRequest(); XHR.open("GET",url, true); XHR.onreadystatechange = function() { if (XHR.readyState == 4 && XHR.status == 200) { document.getElementById(cadre).innerHTML = XHR.responseText ; // content c'est le div ou on veut afficher le résultat var AllScripts=document.getElementsByTagName("script") for (var i=0; i<AllScripts.length; i++) { var s=AllScripts[i]; if (s.src && s.src!="") { // Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts eval(getFileContent(s.src)); } else { eval(s.innerHTML); } } } else { cadre.innerHTML = '<img src="content/loading.gif" />'; } } XHR.send(null); return; }
L'affichage s'effectue bien, c'est juste l'exécution du JS.
Et mon code JS qui est transmis par AJAX.
<?php echo ' <script> function valueSlider() { var resultat = document.forms["option"].elements["slider"].value; document.forms["option"].elements["rangeValue"].value = ""; document.forms["option"].elements["rangeValue"].value += resultat+" %"; } </script>'; ?>
Alors ? Où ais-je commis une faute ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
1 mars 2012 à 21:35
1 mars 2012 à 21:35
dans ton cas en ajax c'est possible:
- un événement (click de souris, etc..) dans ta page principale déclenche dans le navigateur l'envoi d'une requette AJAX
- cette requette Ajax appelle un script PHP sur le serveur en lui passant une ou plusieurs valeurs (très intéressant pour avoir une réponse de php adaptée à chaque cas)
- le script php répond par l'envoi de données html par ex (echo 'bonjour')
- lorsque Ajax dans le navigateur reçoit la réponse, il l'affiche dans le DIV
- attention dans ta page principale, ce div doit avoir un id (unique dans la page) ex :
<div id="reponse_serveur"></div>
dans la partie ajax qui va "ecrire" tu auras:
document.getElementById('reponse_serveur')=la reponse du serveur
Nota: dans cette partie on peut rajouter des instructions javascript, alors pourquoi les intégrer dans la réponse du serveur
- un événement (click de souris, etc..) dans ta page principale déclenche dans le navigateur l'envoi d'une requette AJAX
- cette requette Ajax appelle un script PHP sur le serveur en lui passant une ou plusieurs valeurs (très intéressant pour avoir une réponse de php adaptée à chaque cas)
- le script php répond par l'envoi de données html par ex (echo 'bonjour')
- lorsque Ajax dans le navigateur reçoit la réponse, il l'affiche dans le DIV
- attention dans ta page principale, ce div doit avoir un id (unique dans la page) ex :
<div id="reponse_serveur"></div>
dans la partie ajax qui va "ecrire" tu auras:
document.getElementById('reponse_serveur')=la reponse du serveur
Nota: dans cette partie on peut rajouter des instructions javascript, alors pourquoi les intégrer dans la réponse du serveur
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
25 avril 2012 à 16:51
25 avril 2012 à 16:51
mariamkotti si tu veux une réponse crée un nouveau topic, ne te greffes pas sur un déja existant
La je sens que je vais peter les plombs ... oh oui !
Je veux éxécuter une requete AJAX dans une page PHP déjà appelée avec AJAX.
C'est super important ! Vraiment !
Il n'y a personne pour répondre... ça doit pas être si compliqué tout de même.
COMMENT ON EXECUTE UN <SCRIPT> ???
Je sais que c'est faisable, car il y a des gens qui y arrive ! mais je sais pas comment.
Svp, c'est vraiment important je vous jure !
Comment je dois faire ?
Y'a vraiment personne qui sait ?
Enfin, merci quand même.
Je veux éxécuter une requete AJAX dans une page PHP déjà appelée avec AJAX.
C'est super important ! Vraiment !
Il n'y a personne pour répondre... ça doit pas être si compliqué tout de même.
COMMENT ON EXECUTE UN <SCRIPT> ???
Je sais que c'est faisable, car il y a des gens qui y arrive ! mais je sais pas comment.
Svp, c'est vraiment important je vous jure !
Comment je dois faire ?
Y'a vraiment personne qui sait ?
Enfin, merci quand même.
internetasso
Messages postés
1054
Date d'inscription
jeudi 25 octobre 2007
Statut
Membre
Dernière intervention
30 juin 2013
177
Modifié par crapoulou le 27/09/2010 à 20:46
Modifié par crapoulou le 27/09/2010 à 20:46
plusieurs choses à lire :
https://www.xul.fr/xml-ajax.html
pour t'aider...
ensuite :
https://fr.wikipedia.org/wiki/Asynchronous_JavaScript_And_XML#Avantages_et_inconv.C3.A9nients
La création d'un site commence par la réflexion de son devenir...
https://www.xul.fr/xml-ajax.html
pour t'aider...
ensuite :
https://fr.wikipedia.org/wiki/Asynchronous_JavaScript_And_XML#Avantages_et_inconv.C3.A9nients
La création d'un site commence par la réflexion de son devenir...
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
7 janv. 2009 à 12:22
7 janv. 2009 à 12:22
Bonjour,
J'ai une page PHP appelée avec AJAX
quand je note sur cette page : <?php echo ("test"); ?> -> Cela fonctionne bien !
Mais quand je note :
<script type="text/javascript">
document.write("test");
</script>
Alors tu n'as pas compris le principe d'Ajax
Ajax appelle une page php sur le serveur, cette page fait un traitement (lecture BDD etc...) et te renvoie la réponse par echo
si tu mets un script javascript ça ne peut pas marcher, javascript s'exécute seulement dans le navigateur du poste client. Il n'y a aucun interêt a mettre du javascript dans une réponse à une requête Ajax.
@lain
J'ai une page PHP appelée avec AJAX
quand je note sur cette page : <?php echo ("test"); ?> -> Cela fonctionne bien !
Mais quand je note :
<script type="text/javascript">
document.write("test");
</script>
Alors tu n'as pas compris le principe d'Ajax
Ajax appelle une page php sur le serveur, cette page fait un traitement (lecture BDD etc...) et te renvoie la réponse par echo
si tu mets un script javascript ça ne peut pas marcher, javascript s'exécute seulement dans le navigateur du poste client. Il n'y a aucun interêt a mettre du javascript dans une réponse à une requête Ajax.
@lain
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
7 janv. 2009 à 13:21
7 janv. 2009 à 13:21
Je veux éxécuter une requete AJAX dans une page PHP déjà appelée avec AJAX
on te dit que ce n'est pas possible
Ajax c'est du javascript, donc ne peut pas être exécuté dans un script php qui est lui sur le serveur (le serveur n'exécute pas les cripts JS)
on te dit que ce n'est pas possible
Ajax c'est du javascript, donc ne peut pas être exécuté dans un script php qui est lui sur le serveur (le serveur n'exécute pas les cripts JS)
J'ai quelques soucis avec cette explication.
Je suis d'accord, on envoie au serveur PHP une demande d'exécution d'une "page" (on devrait dire un programme) PHP qui est dans son environnement et il crée une page HTML. Cette page HTML est renvoyée au navigateur qui va l'afficher. Elle peut contenir tous ce que peut contenir une page WEB, morceaux de CSS, scripts JAVA compris.
Je pense que c'est le fait de l'afficher dans une page déjà existante que cela pose un problème,
J'ai ce besoin car je veux afficher une page construite par un programme en PHP dans une DIV de la page principale d'un site.
Avec les Frames ça fonctionne car le navigateur considère que les frames constituent autant de fenêtre d'affichage d'une page complète HTML, pour une DIV, cela semble moins évident et plus restrictif, on ne peut visiblement y mettre que du texte ou des images, pas des scripts ou autres trucs interprétables ou exécutables.
Reste alors à mettre les scripts dans la page principale si ceux-ci ne sont pas construit par du PHP pour tenir compte des saisies de l'utilisateur.
Je suis d'accord, on envoie au serveur PHP une demande d'exécution d'une "page" (on devrait dire un programme) PHP qui est dans son environnement et il crée une page HTML. Cette page HTML est renvoyée au navigateur qui va l'afficher. Elle peut contenir tous ce que peut contenir une page WEB, morceaux de CSS, scripts JAVA compris.
Je pense que c'est le fait de l'afficher dans une page déjà existante que cela pose un problème,
J'ai ce besoin car je veux afficher une page construite par un programme en PHP dans une DIV de la page principale d'un site.
Avec les Frames ça fonctionne car le navigateur considère que les frames constituent autant de fenêtre d'affichage d'une page complète HTML, pour une DIV, cela semble moins évident et plus restrictif, on ne peut visiblement y mettre que du texte ou des images, pas des scripts ou autres trucs interprétables ou exécutables.
Reste alors à mettre les scripts dans la page principale si ceux-ci ne sont pas construit par du PHP pour tenir compte des saisies de l'utilisateur.
19 févr. 2009 à 00:33
[...] //Le début c'est les vérifications standards du navigateur et l'envoi de la requete Ajax puis ...
XhrObj.onreadystatechange = function() {
if (XhrObj.readyState == 4 && XhrObj.status == 200) {
content.innerHTML = XhrObj.responseText ; // content c'est le div ou on veut afficher le résultat
var AllScripts=content.getElementsByTagName("script")
for (var i=0; i<AllScripts.length; i++) {
var s=AllScripts[i];
if (s.src && s.src!="") {
// Précédement asynchrone, mis en synchrone pour éviter des problèmes de dépendances de scripts
alert(s.src);
eval(getFileContent(s.src));
}
else {
eval(s.innerHTML);
}
}
J'espere que ca pourra t'aider !
5 déc. 2010 à 21:53
Merci Jives69, ce que tu as mis marche à la perfection pour moi.
16 févr. 2012 à 04:42
3 ans + tard : merci beaucoup, génial ! Ça m'enlève une belle épine du pied :)
Je l'ai simplifié n'ayant pas de src dans ma page appelée :
16 févr. 2012 à 04:43