Смешивание php и javascript – при каких условиях?

В каких условиях я могу поместить 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.