php в javascript
php в javascript
Всем привет ! Возник следующий вопрос:
Иногда бывает нужно взять из php переменную и присвоить ее переменной javascript. Но в таком случае, если я выношу js-код в отдельный файл, то php код в нем не исполняется. Почитал на форумах, можно добавить строчку AddHandler application/x-httpd-php .js в htaccess, но у меня возникло сомнение, правильно ли это, и не влечет ли за собой никаких проблем и уязвимостей ?
Иногда бывает нужно взять из php переменную и присвоить ее переменной javascript. Но в таком случае, если я выношу js-код в отдельный файл, то php код в нем не исполняется. Почитал на форумах, можно добавить строчку AddHandler application/x-httpd-php .js в htaccess, но у меня возникло сомнение, правильно ли это, и не влечет ли за собой никаких проблем и уязвимостей ?
RTFM !
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: php в javascript
Да нет. Нужно header отправить в скрипте, чтоб браузер распознал файл как js.
Например: ссылка http://localhost/my_script.php
открыв ссылку, браузер не распознает по расширению файла, а по тому что ему сервер говорит, в данном случае он будет думать что ему отправили javascript скрипты, поэтому его можно легко в html внедрять
Например: ссылка http://localhost/my_script.php
Код: Выделить всё
<?php
header("Content-type: application/x-javascript");
echo 'var t="Hello world!";';
echo 'alert(t);';
?>
var tt='Hello World 2!';
alert(tt);
Код: Выделить всё
<html>
<head>
<script type="text/javascript" src="http://localhost/my_script.php" />
</head>
</html>
Жду Yii 3!
Re: php в javascript
Спасибо, но это не очень красиво будет, при том что у меня 300-400 строчек javascript кода
RTFM !
Re: php в javascript
Я делал через глобальные переменные.
В view:
В js
В view:
Код: Выделить всё
<script type="text/javascript" language="JavaScript">
$(document).ready(function(){
window.countImg = <?php echo $countImg; ?>;
});
</script>
Код: Выделить всё
var countImg = window.countImg;
Re: php в javascript
тоже была такая мысль. ладно, попробую варианты которые есть ) спасибоNihisil писал(а):Я делал через глобальные переменные.
В view:В jsКод: Выделить всё
<script type="text/javascript" language="JavaScript"> $(document).ready(function(){ window.countImg = <?php echo $countImg; ?>; }); </script>
Код: Выделить всё
var countImg = window.countImg;
RTFM !
Re: php в javascript
По хорошему глобальные переменные вообще не стоит использовать. Может стоит изменить логику скрипта или получать необходимые в процессе работы данные через AJAX-запрос например в формате JSON... А пытаться встраивать PHP код по внешний файл скрипта - это по моему вообще извращение.
Re: php в javascript
Два запроса вместо одного, тоже, не самое лучшее решение.alexzv писал(а):По хорошему глобальные переменные вообще не стоит использовать. Может стоит изменить логику скрипта или получать необходимые в процессе работы данные через AJAX-запрос например в формате JSON... А пытаться встраивать PHP код по внешний файл скрипта - это по моему вообще извращение.
Re: php в javascript
Если говорить про Yii, то можно использовать метод Yii::app()->clientScript->registerScript.
например, что бы передать переменную $menu в JavaScript, пишем так:
Если это часто надо, то лучше расширить CClientScript, и реализовать в нём метод, например registerScriptData.
Ну и вызывать вот так:
например, что бы передать переменную $menu в JavaScript, пишем так:
Код: Выделить всё
$menu = array('Menu 1', 'Menu 2');
Yii::app()->clientScript->registerScript('menuList', 'var menuList = '.json_encode($menu).';');
Код: Выделить всё
public function registerScriptData($name, $data) {
Yii::app()->clientScript->registerScript($name, 'var '.$name.' = '.json_encode($data).';');
}
Код: Выделить всё
$menu = array('Menu 1', 'Menu 2');
Yii::app()->clientScript->registerScriptData('menuList', $menu);
Последний раз редактировалось Smak 2011.06.04, 23:15, всего редактировалось 2 раза.