В каких условиях я могу поместить PHP в код Javascript? Все в порядке? Это просто плохая идея? Я удивлен, что больше этого не видел.
Например, я наткнулся на это.
$('#thumbnail').imgAreaSelect({aspectRatio: '<?php echo $thumb_height/$thumb_width;?>', onSelectChange:preview});
.. который был в элементе сценария onpage. Я не настолько опытен, но я был просто удивлен, что раньше не видел смешанных js / php. Но можете ли вы поместить PHP в .js-файлы? Если я установил расширение файла на .php, будет ли файл разбираться?
Вы можете поместить PHP-код в *.js
файлы, но вам нужно сказать веб-серверу также выполнить интерпретатор PHP в файлах *.js
. Что-то вроде этого должно быть в вашем httpd.conf
<IfModule php5_module> AddType application/x-httpd-php .php .php5 .js ... </IfModule>
Лучшее решение – просто переименовать ваши файлы *.js
в *.js.php
или просто *.php
. Браузеры не будут возражать, и интерпретатор PHP также будет выполнен на них.
Смешивание JS с PHP обычно устраняется из-за трудностей с отладкой и / или плохой читаемости кода (например, смешивания PHP с HTML). Это, однако, возможно. Но более безопасный подход может состоять в том, чтобы передать значение PHP функции или установить значение PHP для глобальной переменной JS и использовать ее вместо этого. Может быть, что-то вроде этого:
//JS code var value = <?php echo ($thumb_height/$thumb_width);?> .... $('#thumbnail').imgAreaSelect({aspectRatio: value, onSelectChange:preview});
Таким образом, это будет намного легче читать. Хорошего дня.
В каких условиях я могу поместить PHP в код Javascript?
Ни при каких условиях. Это было бы невозможно и бесполезно.
Вы можете поместить в PHP только наоборот – JS-код. Другими словами, вы можете заставить PHP выводить любой текст , который может быть допустимым HTML, JS, XML, что угодно.
После отправки в браузер этот текст будет интерпретироваться соответствующим образом, но в нем не будет следа PHP .
Это всегда нормально, пока PHP представляет только логику отображения.
Таким образом, вы помещаете PHP в .js-файлы только в том случае, если это будут фактически файлы PHP.
Представленный вами код является очень разумным способом динамического создания javascript на веб-странице, возвращаемой веб-сервером.
Так, например, если $ thumb_height было 100, а $ thumb_width – 10, веб-сервер вернул бы веб-страницу, содержащую следующий javascript:
$ ('# thumbnail'). imgAreaSelect ({aspectRatio: '10', onSelectChange: preview});
Если при другом вызове страницы $ thumb_height было 24, а $ thumb_width – 6, веб-страница, возвращаемая сервером, была бы:
$ ('# thumbnail'). imgAreaSelect ({aspectRatio: '4', onSelectChange: preview});
Вы можете использовать php для динамического создания любой части веб-страницы, как html, так и javascript.