Выполнение кода PHP внутри файла .js

Я пытаюсь получить немного PHP для выполнения внутри .js-файла, но, очевидно, не знаю, как это сделать.

В основном код добавляет некоторые HTML-теги на мою страницу, которые я использую для формы контактного контакта. Однако сама контактная форма выполняется в WordPress по короткому коду. Поэтому я пытаюсь заставить код короткого кода работать внутри кода, который делает форму слайдом.

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>'); 

Если я изменю переменную «phpTest» на регулярную строку с текстом, она покажется прекрасной, я просто не уверен, как выполнить php в этом экземпляре.

EDIT : Тип сценария всегда должен быть text/javascript поскольку application/javascript могут нарушать совместимость со старыми браузерами (я думаю, что IE8 и ранее будут игнорировать тег скрипта с этим типом). Однако Content-type все равно должен быть application/javascript .


Вы не можете смешивать в php в .js файл, как и с обычным файлом .php , поскольку файл .js не обрабатывается процессором .php так, как ваши .php файлы.

Наиболее типичный способ сделать это – в том числе php в js-файле – это просто иметь встроенный JS (материал между тегами <script> ) в вашем .php-файле. Тогда он будет работать так, как ожидалось.

Другой способ сделать это – создать файл js внутри php, поэтому запустите свой .php-файл с помощью

 <?php header("Content-type: application/javascript"); ?> var jsvar='something'; var othervar='<?php echo $phpVar; ?>'; //<?php //some php ;?> 

а затем включить его на свою страницу, как это

 <script src='myjs.php' type='text/javascript'></script> 

Я прокомментировал, что ваш вопрос невозможен, однако это действительно возможно. Это не рекомендуется , но если вас не беспокоят возможные дыры в безопасности, вот способ решить ваш вопрос:

Создайте файл .htaccess в том же каталоге, что и ваши .js файлы, со следующим:

 AddHandler application/x-httpd-php .js <FilesMatch "\.js$"> Header set Content-Type "text/javascript; charset=utf-8" </FilesMatch> 

Это будет выполнять ваши файлы JavaScript как PHP, а затем автоматически исправить файлы Content-Type для .js (потому что они воспринимаются как текст при добавлении обработчика php).

Примечание . Хотя это быстрое и грязное решение, лучший способ – использовать Ajax (см . Ответ chiliNUT )

Вы можете отправить запрос ajax в файл .php. Это немного грязный трюк, но он работает

 $.post('thePhpFile',{var1:var1,var2:var2},function(result){ //Code to do with the resulted... like $("#div").html(result); }); 

С помощью этого трюка вы можете в основном делать все, что хотите

Я думаю, вы можете сделать что-то подобное с помощью AJAX:

Код JS:

 var xmlhttp; if (window.XMLHttpRequest){ // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); }else{ // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function(){ if (xmlhttp.readyState==4 && xmlhttp.status==200){ $this.html('<div id="fpi_feedback"><div id="fpi_title" class="rotate"><h2>' + thisSettings.title + '</h2></div><div id="fpi_content">' + xmlhttp.responseText + '</div></div>'); } } xmlhttp.open("GET","do_shortcode_file.php",true); xmlhttp.send(); 

Файл do_shortcode_file.php должен иметь следующее:

PHP-код:

 <?php echo do_shortcode("[contact-form-7 id=\'1088\' title=\'Live Chat Form\']"); 

См. Учебник AJAX на w3schools.com для некоторых деталей и хороший пример об Ajax.

Предположим, что ваше имя файла – myscript.js:

в вашем теге head (это должен быть исполняемый файл php):

 <head> <script type="text/javascript"> <?php require_once 'myscript.js'; ?> </script> 

… … таким образом вы можете выполнить этот файл, как если бы это был файл php