Я пытаюсь получить немного 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