A voir également:
- PHP: lecture d'un fichier distant avec JS ext
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Br php ✓ - Forum PHP
- Expert php - Télécharger - Langages
- Echo image php ✓ - Forum PHP
22 réponses
imw
Messages postés
233
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
8 septembre 2011
42
4 août 2009 à 14:54
4 août 2009 à 14:54
Je comprend pas bien la question ...
Tu veux intégrer un javascript distant ?
Tu veux intégrer un javascript distant ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 15:08
4 août 2009 à 15:08
pour faire appel a un fichier javascript externe à ton script tu mets dans le head
<script type="text/javascript" src="chemin_vers__ton_fichier .js"></script>
<script type="text/javascript" src="chemin_vers__ton_fichier .js"></script>
C'est pas ça la question, c'est beaucoup plus compliqué.
Il s'agit de passer les résultats d'un script javascript à un script PHP !
Je compte donc appeler via PHP une page contenant un script JS et récupérer les variables de sortie... Tout cela sans avoir à passer par un formulaire.
Donc je souhaite faire comme les fonctions file() ou file_get_contents() de PHP, mais en récupérant des variables après exécution d'un javascript !
La classe cURL pourrait-elle m'être utile ?
Merci !
Il s'agit de passer les résultats d'un script javascript à un script PHP !
Je compte donc appeler via PHP une page contenant un script JS et récupérer les variables de sortie... Tout cela sans avoir à passer par un formulaire.
Donc je souhaite faire comme les fonctions file() ou file_get_contents() de PHP, mais en récupérant des variables après exécution d'un javascript !
La classe cURL pourrait-elle m'être utile ?
Merci !
imw
Messages postés
233
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
8 septembre 2011
42
4 août 2009 à 17:09
4 août 2009 à 17:09
le JS est executé sur un navigateur, le PHP sur un serveur.
A priori, tu ne pourra jamais appeler un JS en PHP et obtenir un retour du JS executé !
La seule chose faisable, si c'est ce que tu veux, c'est que le JS sur la page en cours envoi des infos à PHP.
Ca c'est faisable : AJAX
A priori, tu ne pourra jamais appeler un JS en PHP et obtenir un retour du JS executé !
La seule chose faisable, si c'est ce que tu veux, c'est que le JS sur la page en cours envoi des infos à PHP.
Ca c'est faisable : AJAX
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 20:00
4 août 2009 à 20:00
ll s'agit de passer les résultats d'un script javascript à un script PHP
ça c'est tout à fait possible en AJAX
Je compte donc appeler via PHP une page contenant un script JS et récupérer les variables de sortie.
ça comme dit doriantoruin ce n'est pas possible
par php tu peux très bien générer une page html contenant du javascript mais les résultats ne seront pas récupérés par le script php ce dernier étant terminé depuis longtemps sur le serveur.
ça c'est tout à fait possible en AJAX
Je compte donc appeler via PHP une page contenant un script JS et récupérer les variables de sortie.
ça comme dit doriantoruin ce n'est pas possible
par php tu peux très bien générer une page html contenant du javascript mais les résultats ne seront pas récupérés par le script php ce dernier étant terminé depuis longtemps sur le serveur.
OK pour le fait que PHP soit exécuté bien avant le JS, et pas au même endroit.
Mais pour la solution AJAX, comment je pourrais faire ? Ce qui me fait buter, c'est que pour réaliser des traitements en PHP, j'ai besoin d'un résultat d'un code JS de manière intermédiaire...
Y'a rien qui permet à un script PHP de se mettre en pause, d'appeler un script JS (sur un autre fichier, évidemment) et de récupérer les résultats sous forme de chaîne de caractères ?
Mais pour la solution AJAX, comment je pourrais faire ? Ce qui me fait buter, c'est que pour réaliser des traitements en PHP, j'ai besoin d'un résultat d'un code JS de manière intermédiaire...
Y'a rien qui permet à un script PHP de se mettre en pause, d'appeler un script JS (sur un autre fichier, évidemment) et de récupérer les résultats sous forme de chaîne de caractères ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 20:09
4 août 2009 à 20:09
Y'a rien qui permet à un script PHP de se mettre en pause
NON sinon les serveurs se mettraient vite à genoux
par contre avec Ajax tu peux bien sur appeler "en arrière plan" sans recharger la page un script php et lui passer un ou plusieurs valeurs
quand le script php appelé répond tu fais ce que tu veux de la réponse, tu peux l'écrire à un endroit précis de ta page dans un div par exemple
si tu veux je peux te donner un bout d'exemple
NON sinon les serveurs se mettraient vite à genoux
par contre avec Ajax tu peux bien sur appeler "en arrière plan" sans recharger la page un script php et lui passer un ou plusieurs valeurs
quand le script php appelé répond tu fais ce que tu veux de la réponse, tu peux l'écrire à un endroit précis de ta page dans un div par exemple
si tu veux je peux te donner un bout d'exemple
Je veux bien un bout d'exemple, oui...
J'utilise déjà pas mal AJAX pour des vérifs dans des bases de données pour des champs de formulaire, mais j'avoue que là, j'ai du mal à conceptualiser !
Merci beaucoup, en tous cas.
J'utilise déjà pas mal AJAX pour des vérifs dans des bases de données pour des champs de formulaire, mais j'avoue que là, j'ai du mal à conceptualiser !
Merci beaucoup, en tous cas.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 20:32
4 août 2009 à 20:32
<html> <head> <script type="text/javascript"> function makeRequest(url,nom_champ_poste,id_lire,id_ecrire){ var http_request = false; //créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Abandon :( Impossible de créer une instance XMLHTTP'); return false; } http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse // lancement de la requete http_request.open('POST', url, true); //changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'.... http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); obj=document.getElementById(id_lire); data=nom_champ_poste+"="+obj.value; http_request.send(data); } function traitementReponse(http_request,id_ecrire) { var affich=""; if (http_request.readyState == 4) { if (http_request.status == 200) { // cas avec reponse de PHP en mode texte: //ecriture dans le div, si c'est dans un input il faut utiliser .value au lieu de .innerHTML var reponse=http_request.responseText; //alert(reponse); document.getElementById(id_ecrire).innerHTML=reponse; } else { alert('Un problème est survenu avec la requête.'); } } } </script> </head> <body> <form name="form1" method="post" action=""> <input type="text" name="champ1" id="champ1" value=""><br /> <input type="button" name="bouton_Ajax" value="Appeller Ajax" onClick="makeRequest('test.php','val_champ1','champ1','reponse');"> <br /> <div id="reponse"><!-- ajax va ecrire là --></div> </form> </body> et le script php appelé:test.php <?php $val_champ1=$_POST['val_champ1']; //on va faire une réponse bidon: echo "Vous avez saisi ".$val_champ1; ?>
Merci, sympa pour le code, très clair !
Juste un détail : Ajax permet de récupérer des variables en javascript. Je souhaite néanmoins les traiter dans un script PHP, comment faire ? L'idée de départ est d'éviter de passer par un formulaire ou une page tierce qui serait chargée, recevant des données en GET ou POST...
Ton idée permet de récupérer les données au moment où on le souhaite dans l'exécution d'un script / d'une page, mais pas de les récupérer en tant que chaîne de caractères PHP.
Je cherche la perle rare qui ferait :
$resultat = fonctionMiracle("script.html");
avec script.html du type :
<script type='text/javascript'>
...
var result = "test"
document.write(result);
</script>
Mon but est donc que $resultat prenne la valeur "test" !.. Et je n'ai pas l'impression que ton script me permette d'avoir ça, du moins directement...
Une idée ?
Juste un détail : Ajax permet de récupérer des variables en javascript. Je souhaite néanmoins les traiter dans un script PHP, comment faire ? L'idée de départ est d'éviter de passer par un formulaire ou une page tierce qui serait chargée, recevant des données en GET ou POST...
Ton idée permet de récupérer les données au moment où on le souhaite dans l'exécution d'un script / d'une page, mais pas de les récupérer en tant que chaîne de caractères PHP.
Je cherche la perle rare qui ferait :
$resultat = fonctionMiracle("script.html");
avec script.html du type :
<script type='text/javascript'>
...
var result = "test"
document.write(result);
</script>
Mon but est donc que $resultat prenne la valeur "test" !.. Et je n'ai pas l'impression que ton script me permette d'avoir ça, du moins directement...
Une idée ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 20:50
4 août 2009 à 20:50
si je comprend bien tu veux a partir d'un script php appeler un script javascript et recupérer le resultat dans un script php
alors pourquoi ne pas passer directement de php à php ?
header('Location:script2.php?variable1=toto&variable2=titi');
et tu récupéres dans le script 2 par $_GET
alors pourquoi ne pas passer directement de php à php ?
header('Location:script2.php?variable1=toto&variable2=titi');
et tu récupéres dans le script 2 par $_GET
J'ai pensé à cette solution, mais en fait, j'ai à effectuer le script JS pour une série de résultats issus d'une recherche dans une base de données.
Je ne suis donc pas super convaincu par faire ça :
Recherche DB -> résultats en PHP -> script PHP -> script JS -> script PHP -> JS -> PHP -> etc...
car ça fait changer de page plein de fois, et il faut passer plein de paramètres entre chacun d'entre elles.
Je cherche donc plutôt une solution du type :
Recherche DB
-> résultats en PHP avec fetch_array
-> script PHP
-> appel du script JS pour le résultat 1
-> fin du script PHP pour le résultat 1
-> appel du script JS pour le résultat 2
-> fin du script PHP pour le résultat 2
etc...
Faisable ?
Je ne suis donc pas super convaincu par faire ça :
Recherche DB -> résultats en PHP -> script PHP -> script JS -> script PHP -> JS -> PHP -> etc...
car ça fait changer de page plein de fois, et il faut passer plein de paramètres entre chacun d'entre elles.
Je cherche donc plutôt une solution du type :
Recherche DB
-> résultats en PHP avec fetch_array
-> script PHP
-> appel du script JS pour le résultat 1
-> fin du script PHP pour le résultat 1
-> appel du script JS pour le résultat 2
-> fin du script PHP pour le résultat 2
etc...
Faisable ?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
4 août 2009 à 22:21
4 août 2009 à 22:21
script PHP
-> appel du script JS pour le résultat 1
-> fin du script PHP pour le résultat 1
la je ne comprend pas tout ?
pourquoi passer par du JS pour afficher des resultats isuus d'une BDD
par un seul script php tu peux interroger la BDD, exploiter les réponses par fetch_array et le afficher ensuite toujours dans le même script
ce que tu appelles resultat 2 c'est quoi une deuxième liste déroulante par exemple ?
-> appel du script JS pour le résultat 1
-> fin du script PHP pour le résultat 1
la je ne comprend pas tout ?
pourquoi passer par du JS pour afficher des resultats isuus d'une BDD
par un seul script php tu peux interroger la BDD, exploiter les réponses par fetch_array et le afficher ensuite toujours dans le même script
ce que tu appelles resultat 2 c'est quoi une deuxième liste déroulante par exemple ?
Je pensais m'être bien exprimé...
Recherche DB
PUIS
résultats dans un tableau
PUIS
pour chaque résultat, application d'un script PHP, d'un script JS et d'encore un peu de PHP
PUIS
affichage
Ainsi, j'ai besoin d'appeler un JS (ca fait appel à un script externe, je n'ai pas le choix du langage) pour une itération qui peut être très longue...
Recherche DB
PUIS
résultats dans un tableau
PUIS
pour chaque résultat, application d'un script PHP, d'un script JS et d'encore un peu de PHP
PUIS
affichage
Ainsi, j'ai besoin d'appeler un JS (ca fait appel à un script externe, je n'ai pas le choix du langage) pour une itération qui peut être très longue...
imw
Messages postés
233
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
8 septembre 2011
42
5 août 2009 à 11:57
5 août 2009 à 11:57
C'est un peu bizarre, mais admettons ...
Dans ce cas, il faut le faire en 2 étapes,
tu envoi la page avec le script au navigateur,
une fois le traiement JS fini, tu renvoi les données au 2eme script php (ou le même selon le cas).
Pour faire le renvoi, le plus simple est juste de faire un document.location='page.php?valeur='+val;
Dans ce cas, il faut le faire en 2 étapes,
tu envoi la page avec le script au navigateur,
une fois le traiement JS fini, tu renvoi les données au 2eme script php (ou le même selon le cas).
Pour faire le renvoi, le plus simple est juste de faire un document.location='page.php?valeur='+val;
S'il n'y a vraiment que cette solution... Ca va faire lourd : imaginons que j'ai 30 résultats sortant de la base, ca me fait 60 pages successives à charger... :-/
Mais s'il n'y a que ça, c'est parti !..
Mais s'il n'y a que ça, c'est parti !..
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 août 2009 à 14:03
5 août 2009 à 14:03
imaginons que j'ai 30 résultats sortant de la base, ca me fait 60 pages successives à charger
pourquoi tu ne peux pas afficher tes 30 résultats dans la même page ?
Recherche DB
PUIS
résultats dans un tableau
PUIS
pour chaque résultat, application d'un script PHP,
tu peux faire tout ça en un seul script php
d'un script JS et d'encore un peu de PHP
PUIS
affichage
ensuite je suppose qu'il y a une action de l'utilisateur, un évènement, un click sur un lien (spécifique à un des items affiché) pour déclencher un script javascript qui va appeler un script php pour afficher un complément ou autre et ça c'est de l'AJAX
mais si tu nous donnais un petit bout d'exemple de ce qu e tu veux faire on te conseillerait mieux
pourquoi tu ne peux pas afficher tes 30 résultats dans la même page ?
Recherche DB
PUIS
résultats dans un tableau
PUIS
pour chaque résultat, application d'un script PHP,
tu peux faire tout ça en un seul script php
d'un script JS et d'encore un peu de PHP
PUIS
affichage
ensuite je suppose qu'il y a une action de l'utilisateur, un évènement, un click sur un lien (spécifique à un des items affiché) pour déclencher un script javascript qui va appeler un script php pour afficher un complément ou autre et ça c'est de l'AJAX
mais si tu nous donnais un petit bout d'exemple de ce qu e tu veux faire on te conseillerait mieux
Hm... Je posterai des bouts de codes d'ici quelques jours si j'ai pas trouvé...
Je suis d'accord pour le fait qu'on peut mettre tout le début dans un seul script PHP.
Le truc, c'est qu'il y a deux niveaux de rafinement pour l'affichage : il y a une première sélection faite dans la base de donnée qui donne un premier tableau de résultats. C'est ensuite l'application d'un script JS sur ces résultats qui va déterminer s'ils doivent être affichés ou pas !
Ainsi, le script JS n'est pas appelé par l'utilisateur...
Tu vois le problème ? ^^
Je suis d'accord pour le fait qu'on peut mettre tout le début dans un seul script PHP.
Le truc, c'est qu'il y a deux niveaux de rafinement pour l'affichage : il y a une première sélection faite dans la base de donnée qui donne un premier tableau de résultats. C'est ensuite l'application d'un script JS sur ces résultats qui va déterminer s'ils doivent être affichés ou pas !
Ainsi, le script JS n'est pas appelé par l'utilisateur...
Tu vois le problème ? ^^
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 août 2009 à 14:19
5 août 2009 à 14:19
ensuite l'application d'un script JS sur ces résultats qui va déterminer s'ils doivent être affichés ou pas
il te faut du JS pour ça, pourquoi pas avec du php ?
si ce sont des infos liés au navigateur, pays etc tu peux avoir ça dès le début avec ton script php
il te faut du JS pour ça, pourquoi pas avec du php ?
si ce sont des infos liés au navigateur, pays etc tu peux avoir ça dès le début avec ton script php