Внутри скрипта PHP у меня есть следующее:
echo <<<EOD <script type="text/javascript"> document.getElementById('my_element_id').innerHTML='Do stuff'; </script> EOD;
Можно ли добавить PHP в JavaScript? Заменить часть «Делать вещи» на PHP-код? Если да, как мне это сделать?
Прежде всего, следует отметить, что это не имеет ничего общего с javascript. У вас может быть любая форма текста. Ваш фактический вопрос заключается в том, как использовать переменную внутри heredoc.
Heredoc определяется следующим образом:
Nowdocs – это строки с одним кавычком, что heredocs – это строки с двойными кавычками . A nowdoc задается аналогично heredoc, но синтаксический анализ не выполняется внутри nowdoc. Конструкция идеально подходит для встраивания PHP-кода или других больших блоков текста без необходимости экранирования.
Это означает, что, поскольку это работает:
$name = 'Foo'; echo "My name is $name"; // Using double quotes so variables get expanded
Тогда это также работает:
$name = 'Foo'; echo <<<EOD My name is <strong>$name</strong> EOD; // Using heredoc so variables get expanded
По существу это означает, что да, до тех пор, пока вы сначала помещаете содержимое 'Do stuff'
в переменную. Обратите внимание: если вы используете более продвинутые переменные / массивы, рекомендуется добавить $array = json_encode($array)
прежде чем вставлять его в JS-код (предположим, что $name
– The Boss's Wife
тогда апостроф разрушит ваш JS, если вы не кодируете его).
DEMO
Можно сделать так:
<?php $anyphpvariable='foo'; echo <<<EOD <script type="text/javascript"> document.getElementById('my_element_id').innerHTML=$anyphpvariable; </script> EOD; ?>
Все, что угодно от php, может быть присвоено JS и его хорошей практике. Но JS не может присваивать что-либо PHP.
Да, но я могу получить только то, что вы хотите, если я поместил код после соответствующего HTML. Вы можете эхо-скрипты … например, это будет работать:
<div id="footer">Hey</div> <?php $myVar = 'Hello'; echo "<SCRIPT> document.getElementById('footer').innerHTML = '$myVar'; </SCRIPT>"; ?> // You will see Hello in the footer
но это не сработает:
<?php $myVar = 'Hello'; echo "<SCRIPT> document.getElementById('footer').innerHTML = '$myVar'; </SCRIPT>"; ?> <div id="footer">Hey</div>// You will see Hey in the footer
В качестве дополнительной заметки эти другие функции / методы также будут работать:
$myVar = 'Hi'; echo "<SCRIPT> alert('$myVar'); </SCRIPT>";//Alerts 'Hi' $myVar = 'home.php'; echo "<SCRIPT> location = '$myVar'; </SCRIPT>";//Takes you to home.php $myVar = 'hi'; echo "<SCRIPT> myFunction('$myVar'); </SCRIPT>";//calls myFunction with argument $myVar