Appeller du Php en javascript

isolu

WRInaute discret
Bonjour,

J'ai un petit problème qui selon mon peut pas être réglé mais ont le sait jamais, un ptit génie pourrait trouver la solution.

J'ai un script que j'appelle avec un include dans une page php et il fonctionne bien. Maintenant je veux appeller ce script dans une page html.

J'appelle donc mon script avec du javascript de cette façon
Code:
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php"></script>

Le problème est le suivant, je dois envoyer au script l'url de la page.
En php j'utilise
Code:
include("monscript.php?url=".$HTTP_HOST."&page=".$REQUEST_URI);

Je sais que l'équivalent de $HTTP_HOST en javascript est window.location.hostname et pour $REQUEST_URI c'est window.location.pathname mais je sais pas comment l'intégrer à
Code:
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php"></script>

D'après moi c'est pas faisable mais si vous connaissez un autre moyen de le faire cela sera très apprécié.

Merci!
 

PigeonDeCombat

WRInaute discret
include("monscript.php?url=".$HTTP_HOST."&page=".$REQUEST_URI);

ca ne devrait pas marcher ça déjà.
Et puis poourquoi ne pas faire appel à ces deux variables d'environnement directement depuis le script ?
 

e-kiwi

WRInaute accro
attention, le php est écécuté coté serveur et le javascript coté client, donc l'un sera exécuté avant l'autre.

tu veux faire quoi exactement, faire un outils de statistiques?
 

PaulArdemue

Nouveau WRInaute
Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.
 

sgaze

WRInaute occasionnel
PaulArdemue a dit:
Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.

Pour faire ça, AJAX ! c'est l'occasion idéale de s'y mettre :

Le contenu d'un .js attaché :
Code:
function createHTTPObject() {
   var objHTTP = null;
   
   if (typeof XMLHttpRequest != 'undefined') {
      try {
         // Native XML support (Firefox, etc...)
         objHTTP = new XMLHttpRequest();
      }
      catch (e1) {}
   }
   else {
       try {
         // Internet Explorer support (new library)
         objHTTP = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e2) {
         try {
            // Internet Explorer support (old library)
              objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
           }
         catch (e3) {}
        }
   }
   return objHTTP;
}

var _objHTTP = createHTTPObject();

function getvoid(url) {

	_objHTTP.open('GET', url, true);
	_objHTTP.onreadystatechange = function() {
		if (_objHTTP.readyState == 4) {
			if (_objHTTP.status != 200) {
				//alert('Error: refresh failed !\r\nReason : ' + _objHTTP.statusText);
			}
		}
	}
	_objHTTP.send(null);
}

L'appel à la fonction getvoid :
Code:
<body onload="getvoid('monscript.php?url='+window.location.hostname+'&page='+window.location.pathname)">
 

PaulArdemue

Nouveau WRInaute
AJAX c'est bien mais il faut arrêter de l'utiliser n'importe où et n'importe quand... Isolu n'a aucun intérêt à utiliser AJAX dans ce cas là. Il ne va pas utiliser 20 lignes de JS pour appeler une page PHP alors qu'il peut faire la même chose avec 3 lignes.

dadovb > C'est utile si tu veux recueillir des informations sur le client que tu ne peux pas obtenir avec un langage côté serveur. La résolution écran, par exemple, ne peut être obtenue qu'avec JS. L'idée c'est de passer ensuite cette résolution à une page serveur pour en faire quelque chose. C'est cette méthode qu'utilisent Xiti et Google analytics pour faire des statistique sur les sites web à l'aide de marqueurs.
 

sgaze

WRInaute occasionnel
PaulArdemue a dit:
AJAX c'est bien mais il faut arrêter de l'utiliser n'importe où et n'importe quand... Isolu n'a aucun intérêt à utiliser AJAX dans ce cas là. Il ne va pas utiliser 20 lignes de JS pour appeler une page PHP alors qu'il peut faire la même chose avec 3 lignes.

Ca dépend :wink:
Une fois globalisées les 20 lignes qui permettent de créer la requête xmlhttp, l'appel est fait en une seule ligne. Et disposer d'un objet xmlhttp partout ça ouvre plein de possibilités en terme de comportement lorsqu'on mene des évolutions sur un site.
 

PaulArdemue

Nouveau WRInaute
sgaze a dit:
Ca dépend :wink:
Une fois globalisées les 20 lignes qui permettent de créer la requête xmlhttp, l'appel est fait en une seule ligne. Et disposer d'un objet xmlhttp partout ça ouvre plein de possibilités en terme de comportement lorsqu'on mene des évolutions sur un site.

AJAX ouvre plein de possibilités, c'est certain. Mais AJAX n'est pas adapté à cette demande en particulier: Il ne souhaite pas utiliser dynamiquement des données provenant d'une autre page, il souhaite transmettre dynamiquement des données à une autre page.
 

isolu

WRInaute discret
Merci tout le monde,

sgaze ne le prend pas personnel, mais je veux essayer de garder le tout le plus simple possible. J'ai juste besoin que le javascript recoivent l'infos retourné par php qui sont des images. Je veux donc essayer le AJAX mais si il y a pas d'autre moyen je vais l'essayer.

Chaque images doivent avoir un lien different pour chaque page, c'est a dire qu'ils doivent contenir l'url de la page active. C'est pour traduire mon site, j'ai donc un drapeau français, anglais et espagnole. Donc si tu es sur la page X le drapeau doit contenir l'url de la page X pour que lorsque que tu cliques dessus cela appelle mon traducteur et dit traduit la page X.

Ça fonctionne parfaitement sur mes sites en PHP avec mon include, mon but est de faire fonctionner mon script sur n'importe quel site afin de partager ce script.

PaulArdemue a dit:
Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.

J'aimerais bien le faire mais je sais pas comment. J'ai essayé d'écrire le code
Code:
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php?url=$mon_url"></script>

En utlisant le javascript du genre
Code:
<script>document.write('<script type="text/javascript" src="http://www.mondomaine.com/monscript.php?url='+window.location.hostname+'"></script>');</script>

Mais ça fonctionne pas. Comment je peux faire un code javascript qui ajoute un objet javascript? Je savais même pas que c'était faisable.
 

PaulArdemue

Nouveau WRInaute
Voici une méthode en deux fichiers.



test.php
Code:
<html>
<body>

<script type="text/javascript">
var obj=document.createElement('img');
obj.src='test2.php?pouet=OK';
document.childNodes[0].appendChild(obj);
</script>

</body>
</html>

test2.php
Code:
<?php

$str=isset($_GET['pouet']) ? $_GET['pouet'] : '';
$img=imagecreatetruecolor(300,200);

imagestring($img, 10, 10,50, $str, imagecolorallocate($img, 255, 255, 255) );
imagegif($img);
imagedestroy($img);

?>

Si on demande l'affichage de test.php une image noire apparaît avec en inscription blanche: "OK"
 

Discussions similaires

Haut