L'exécution de code PHP à l'intérieur d'un .fichier js
Je vais essayer d'obtenir un peu de PHP à exécuter à l'intérieur d'un .fichier js, mais ne sais pas comment le faire correctement.
Fondamentalement, le code est d'ajouter quelques balises HTML de ma page, qui je suis à l'aide d'un slideout formulaire de contact. Toutefois, le formulaire de contact se fait en WordPress par un shortcode. Donc, je vais essayer d'obtenir le shortcode pour travailler à l'intérieur du code qui rend la forme de diapositives.
var phpTest = '<?php do_shortcode("[contact-form-7 id=\'1088\' title=\'Live Chat Form\']"); ?>';
//add feedback box
$this.html('<div id="fpi_feedback"><div id="fpi_title" class="rotate"><h2>'
+ thisSettings.title
+ '</h2></div><div id="fpi_content">'
+ phpTest
+ '</div></div>');
Si je change la variable "phpTest" pour un habitué de la chaîne avec le texte, il montre bien, je ne suis pas sûr de la façon d'exécuter le php dans ce cas.
PHP est exécuté avant que le javascript est appelée, donc, ce serait "jamais" de travail.
Essayez d'enregistrer le fichier en tant que .php au lieu de .js. Ensuite, mettre ce code à l'intérieur de
PHP est exécuté sur le serveur. Javascript est exécuté sur la machine du client. L'ordinateur de votre client ne peut pas exécuter votre programme PHP, car il n'a pas connaissance du programme PHP (il ne la voit jamais, seul le serveur voit). Si vous souhaitez effectuer certaines fonctionnalités de PHP et de les signaler à l'utilisateur, sans avoir à recharger la page, regarder en AJAX. Jquery est très simple de mise en œuvre de celui-ci (api.jquery.com/jquery.ajax)
PHP ne fonctionne pas de cette façon.
pourquoi ne serait-il pas de travail? Le code php n'est pas à l'aide de toutes les variables javascript. Il est littéralement écho avec le résultat d'une fonction php qui est le plus susceptible statique.
Essayez d'enregistrer le fichier en tant que .php au lieu de .js. Ensuite, mettre ce code à l'intérieur de
<script>
balises. Je sais que cela fonctionne avec l'asp, je pense qu'il fonctionne avec php trop.PHP est exécuté sur le serveur. Javascript est exécuté sur la machine du client. L'ordinateur de votre client ne peut pas exécuter votre programme PHP, car il n'a pas connaissance du programme PHP (il ne la voit jamais, seul le serveur voit). Si vous souhaitez effectuer certaines fonctionnalités de PHP et de les signaler à l'utilisateur, sans avoir à recharger la page, regarder en AJAX. Jquery est très simple de mise en œuvre de celui-ci (api.jquery.com/jquery.ajax)
PHP ne fonctionne pas de cette façon.
pourquoi ne serait-il pas de travail? Le code php n'est pas à l'aide de toutes les variables javascript. Il est littéralement écho avec le résultat d'une fonction php qui est le plus susceptible statique.
OriginalL'auteur Keryn Gill | 2014-05-09
Vous devez vous connecter pour publier un commentaire.
MODIFIER: Le type de script doit toujours être
text/javascript
commeapplication/javascript
peut casser la compatibilité avec les anciens navigateurs (je pense que IE8 et antérieures ignorer la balise script avec ce type). Le type de Contenu, cependant, doivent encore êtreapplication/javascript
.Vous ne pouvez pas mélanger en php dans un
.js
fichier, la façon dont vous le feriez avec un normal.php
fichier, puisque le.js
fichier n'est pas prétraitées par le.php
moteur de la façon dont votre.php
fichiers.Les plus typiques de la façon de le faire--y compris php dans un fichier js--est juste JS inline (des trucs entre
<script>
tags) dans votre .fichier php. Ensuite, il fonctionnera comme prévu.Une autre façon est de faire un fichier js en php, afin de commencer votre .fichier php avec
et de l'inclure sur votre page comme ceci
oui, c'est certainement une option, mais comme vous l'avez dit, c'est une idée terrible, donc je n'ai pas l'inclure. J'ai d'expliquer ce que sont l'OMI 2 bonnes façons de le faire, pas TOUS les moyen de le faire.
Il ya un certain nombre de situations où vous ne voulez pas faire un secondaire à une requête ajax sur le haut de la page de chargement. emballer le tout dans un objet json, je pense, est probablement la meilleure façon d'aller.
Oui, c'est très vrai, en plus de soutenir JS désactivé navigateurs, parfois, nous ne voulons pas une requête supplémentaire. Cependant, faire le supplément de traitement en PHP peut retarder afficher la page si c'est un travail intensif. Par conséquent, la personne de décider a peser les deux facteurs.
Merci @chiliNUT. Je vais essayer de re-travailler le code dans un .fichier php, et voir si je ne peux pas le faire fonctionner 🙂
OriginalL'auteur chiliNUT
J'ai commenté en disant: votre question n'est pas possible, mais il est en effet possible. Ce n'est pas recommandé, mais si vous n'êtes pas inquiet au sujet de la possible trous de sécurité, ici, c'est un moyen pour effectuer votre question:
Créer un
.htaccess
fichier dans le même répertoire que votre.js
fichiers, avec les éléments suivants:Cela permettra d'exécuter vos fichiers JavaScript et PHP, puis fixer le Type de Contenu .js fichiers automatiquement (parce qu'ils sont considérés comme du texte lorsque vous ajoutez le php gestionnaire).
Note: c'est un moyen rapide et sale de la solution, une meilleure approche serait d'utiliser Ajax (voir chiliNUT Réponse)
La forme que j'essaie de faire pour montrer a son propre sécurité/validation, mais je suppose que vous voulez dire elle ouvrirait les différents problèmes de sécurité. Plutôt que d'utiliser une couverture ".j" ai-je pu l'utilisation exacte .js nom de fichier, de sorte qu'il n'affecte que l' .fichier js et pas tous de la .js sur mon site web?
Oui, vous pouvez, remplacer
\.js$
avec^filename.js$
.J'ai ajouté un lien vers chiliNUT réponse
OriginalL'auteur Brian Graham
Vous pouvez faire un ajax d'une requête post un .fichier php. Il est un peu sale truc, mais il fonctionne
Avec cette astuce, vous pouvez fondamentalement faire ce que vous voulez
OriginalL'auteur Jayo2k
Supposons que votre nom de fichier est myscript.js:
dans votre balise head ( il doit être un fichier exécutable fichier php):
...
...
de cette façon, vous êtes en mesure d'exécuter le fichier comme si c'était un fichier php
OriginalL'auteur Hidran
Je pense que vous pouvez faire quelque chose comme ceci à l'aide d'AJAX:
Code JS:
L'do_shortcode_file.php doit avoir quelque chose comme ceci:
Code PHP:
OriginalL'auteur João Paulo de Lima