Хорошо, сейчас я просто повторяю тег сценария. Например:

echo '<script>alert("Hello world")</script>';

Это правильный способ сделать это? или есть лучший способ?

0
zootropo 10 Июл 2010 в 12:54

3 ответа

Лучший ответ

Вы не можете выполнить JavaScript из PHP. Если вы не используете серверный JavaScript, весь JavaScript всегда выполняется только на клиенте сторона - в браузере. Это означает, что ваш PHP-код записывает JS-код на страницу, которую браузер покажет позже. Эта страница передается с вашего веб-сервера запрашивающему браузеру, и именно тогда и когда код JS выполняется . Для PHP JS, который вы выводите, не имеет смысла. Это просто строка, как и все остальное.

Помимо этого, да. Вот как вы можете это сделать.

10
Gordon 4 Сен 2012 в 09:06

Как сказал Гордон, вы не можете выполнять js из php. Только вы можете генерировать js-код, а также HTML и отправлять его в браузер, где он будет выполняться.

Что касается лучшего способа, вы можете выйти из PHP и написать чистый DHTML как:

function jsalert() {
?>
<script>alert("Hello world")</script>
<?
}

Это считается лучшим по очевидным причинам.

Также рассмотрите возможность разделения вашего приложения на 2 части: бизнес-логика и логика представления. (D) HTML должен присутствовать только в последнем. Простейший, но мощный и широко используемый пример части логики представления так же прост, как простой файл php, включаемый в файл бизнес-логики.
Скажем, здесь идет бизнес-логика

<? 
$str = "Hello world!";
include "js-tpl-example.php";
?>

И шаблон:

<html>
<title></title>
<body>
<script>alert("<?=$str?>")</script>';
</body>
</html>
2
Your Common Sense 10 Июл 2010 в 10:39

Для выполнения функции я так не думаю. Но если вы имеете дело с более сложными объектами и сериализацией, вы можете попробовать json_encode вместо ручной распечатки всех объектов / массивов.

1
gblazex 10 Июл 2010 в 08:58