web-dev-qa-db-fra.com

Inclure PHP dans les fichiers JavaScript (.js)

J'ai un fichier JavaScript (extension .js, ne pas .html) contenant plusieurs fonctions JavaScript.

Je souhaite appeler l’une des PHP fonctions d’un fichier PHP ne contenant que plusieurs PHP fonctions de l’un des fichiers Fonctions JavaScript.

  • Est-ce possible?
  • Aurais-je besoin d'inclure le .php fichier contenant la fonction PHP dans le fichier .js fichier?
  • Comment je ferais ça?
    Par exemple, supposons que j’ai un fichier appelé myLib.php contenant une fonction appelée myFunc prenant deux paramètres (param1 et param2). Ensuite, j'ai un .js fichier contenant une fonction appelée myJsFunc. Comment appeler un myFunc (PHP) depuis le myJsFunc (fonction JavaScript)? N'aurais-je pas besoin d'inclure le fichier PHP dans le fichier .js fichier?
40
GregH

7 ans plus tard, mise à jour: C'est un conseil terrible. S'il vous plaît ne faites pas cela.

Si vous avez juste besoin de passer des variables de PHP au javascript, vous pouvez avoir une balise dans le fichier php/html en utilisant javascript pour commencer.

<script type="text/javascript">
    phpVars = new Array();
    <?php foreach($vars as $var) {
        echo 'phpVars.Push("' . $var . '");';
    };
    ?>
</script>
<script type="text/javascript" src="yourScriptThatUsesPHPVars.js"></script>

Si vous essayez d'appeler des fonctions, vous pouvez le faire comme ceci

<script type="text/javascript" src="YourFunctions.js"></script>
<script type="text/javascript">
    functionOne(<?php echo implode(', ', $arrayWithVars); ?>);
    functionTwo(<?php echo $moreVars; ?>, <?php echo $evenMoreVars; ?>);
</script>
54
sgrif
AddType application/x-httpd-php .js

AddHandler x-httpd-php5 .js

<FilesMatch "\.(js|php)$">
SetHandler application/x-httpd-php
</FilesMatch>

Ajoutez le code ci-dessus dans le fichier .htaccess et exécutez php dans les fichiers js

DANGER: Ceci permettra au client de voir potentiellement le contenu de vos fichiers PHP. N'utilisez pas cette approche si votre PHP contient des informations sensibles (ce qui est généralement le cas).

Si vous DEVEZ utiliser PHP pour générer vos fichiers JavaScript, utilisez svp pure PHP pour générer le fichier JS complet. Vous pouvez le faire en utilisant un fichier normal. Fichier PHP exactement comme vous le feriez normalement en HTML, la différence est de définir le bon en-tête à l’aide de la fonction d’en-tête de PHP, de sorte que le type mime correct soit renvoyé au navigateur. Le type mime pour JS est généralement " application/javascript "

24
ammar

PHP et JS ne sont pas compatibles. vous ne pouvez pas simplement inclure une fonction PHP dans JS. Ce que vous voulez probablement faire est d’émettre un AJAX Demander à JavaScript et envoyer une réponse JSON en utilisant PHP.

10
NikiC

Une version légèrement modifiée basée sur Blorgbeard, pour des tableaux php associatifs facilement référençables en littéraux d’objets javascript:

Fichier PHP (* .php)

Commencez par définir un tableau avec les valeurs à utiliser dans les fichiers javascript:

<?php
$phpToJsVars = [
  'value1' => 'foo1',
  'value2' => 'foo2'    
];
?>

Maintenant, écrivez les valeurs du tableau php dans un littéral d'objet javascript:

<script type="text/javascript">
var phpVars = { 
<?php 
  foreach ($phpToJsVars as $key => $value) {
    echo '  ' . $key . ': ' . '"' . $value . '",' . "\n";  
  }
?>
};
</script>

Fichier Javascript (* .js)

Nous pouvons maintenant accéder au littéral d'objet javscript à partir de n'importe quel autre fichier .js avec la notation:

phpVars["value1"]
phpVars["value2"]
9
Scot Bernard

C'est un peu délicat puisque PHP est évalué côté serveur et javascript est évalué côté client.

J'appellerais votre fichier PHP en utilisant un appel AJAX à partir de l'intérieur de javascript, puis j'utiliserais JS pour insérer le code HTML renvoyé quelque part sur votre page.

6
Josiah

En fait, le meilleur moyen d’y parvenir est d’écrire le javascript dans un fichier .php et d’utiliser jquery dans un fichier séparé pour utiliser le fichier script Jquery get ou jquery load utiliser la fonction include php dans la doc où vivra le javascript. Essentiellement, voici à quoi cela ressemblera.

Fichier Javascript dynamique dans une extension de fichier .php - Contient un mélange de variables php préalablement traitées par le serveur et du javascript ayant besoin de ces variables dans les scripts.

Fichier Js statique - Utilisation de http://api.jquery.com/jquery.getscript/ ou http://api.jquery.com/load/

Dans la page html principale, appelez le fichier statique en tant que fichier js standard. L'appel du fichier js statique forcera le chargement des données dynamiques à partir du serveur.

un fichier file.php 1:

<?php
$somevar = "Some Dynamic Data";
?>

$('input').val(<?php echo $somevar?>);

ou simplement faire écho au script tel que

echo "$('input').val(".$somevar.");";

Fichier 2: somejsfile.js:

$("#result").load( "file.php" );

Fichier 3 myhtml.html:

<script src="somejsfile.js"></script>

Je crois que cette réponse à la question pour beaucoup de gens qui cherchent à mélanger php et javascript. Il serait bien d’avoir ce processus de données en arrière-plan, puis de retarder les utilisateurs dans l’attente des données. Vous pouvez également contourner le second fichier et simplement utiliser php's include sur la page html principale, votre javascript sera exposé sur la page principale. Pour des performances qui dépendent de vous et de la manière dont vous voulez gérer tout cela.

3
DEVPROCB

Il n’existe aucun moyen sûr d’inclure le fichier php dans js.

Une chose que vous pouvez faire en tant que define vos données de fichier php en tant que javascript global variable dans un fichier php. Par exemple, j'ai trois variables que je veux utiliser comme js.

abc.php

<?php
$abc = "Abc";
$number = 052;
$mydata = array("val1","val2","val3");
?>
<script type="text/javascript">
var abc = '<?php echo $abc?>';
var number = '<?php echo $number ?>';
var mydata = <?php echo json_encode($mydata); ?>;
</script>

Après use directement dans votre js file où vous voulez utiliser.

abc.js

function test(){
   alert('Print php variable : '+ abc +', '+number); 
}

function printArrVar(){
  alert('print php array variable : '+ JSON.stringify(mydata)); 
}

À côté de Si vous avez des données critiques que vous ne voulez pas montrer publiquement, vous pouvez les chiffrer avec js. et obtenez également la valeur originale de js afin que personne ne puisse obtenir sa valeur d'origine. s'ils se montrent publiquement.

c’est le moyen standard d’appeler les données de script php dans un fichier js sans inclure js dans un code php ou un script php dans js.

1
Himanshu

Vous ne pouvez pas inclure côté serveur PHP dans votre javascript côté client, vous devrez le transférer sur javascript. Si vous le souhaitez, vous pouvez utiliser php.js , quels ports tous PHP fonctionne sur javascript. Vous pouvez également créer un nouveau fichier php qui renvoie les résultats de l'appel de votre fonction PHP, puis appelez-le fichier en utilisant AJAX pour obtenir les résultats.

1
Cristian Sanchez

Parce que le code Javascript s’exécute dans le navigateur, côté client, et PHP côté serveur, vous avez besoin de (~ # ~] ajax [~ # ~] = - Essentiellement, votre script envoie une requête HTTP à un script PHP, en transmettant les paramètres requis. Le script appelle votre fonction et affiche le résultat, qui est finalement capturé par l'appel Ajax. Généralement, vous ne le faites pas de manière synchrone (en attendant le résultat) - le "A" dans AJAX signifie asynchrone!

1
Paul Dixon

Vous pouvez créer une double résolution du fichier: "filename.php.js" de cette manière. PHP génère JS dans ce fichier. J'ai obtenu tous les paramètres de DB. Cela a fonctionné pour moi sur xampp.

1
barbocc