这是我目前的做法。
<?php
//show footer
echo "<script type='text/javascript'>\n";
echo "alert('Congrats');\n";
echo "</script>";
?>
有没有比回应它更好的方法?
答案 0 :(得分:8)
只需将您的JavaScript代码放在PHP标记之外:
<?php
// your PHP code goes here
?>
// your javascript function out of the PHP tag.
function f() {
alert('congrats');
}
答案 1 :(得分:3)
当然
?>
alert('Congrats');
<?
答案 2 :(得分:2)
如果您真的必须通过从PHP打印来执行js,那么如果您将js功能存储在某个文件中的函数中然后通过打印来调用它们,那么它至少会更清晰。调用
答案 3 :(得分:2)
我建议仅为PHP代码保留PHP文件,并将前端代码(HTML / CSS / javascript)保存在单独的模板文件中。
上次我检查时,混合了表示层&amp;后端代码到同一个文件大约12年前很流行。
项目的文件层次结构如下所示:
- my_project
- lib
- PHP files here
- templates
- HTML templates here
- public <- this is your document root for web server
- index.php <- just a dispatcher
- js
- images
- css
答案 4 :(得分:1)
使用HEREDOCS,或者将PHP模式分解为“html”模式。如果Javascript完全是静态的,或者有一些部分需要包含一些PHP值,请进入html模式('?&gt;'出php)。这将允许任何体面的文本编辑器意识到你正在做HTML和Javascript,并在适当的时候突出语法。以下都是等价的,但你自己决定哪个更具可读性:
'纯php':
<?php
echo '<script>';
echo ' var x = [' . $somePHPvar . '];';
echo ' alert(x);';
echo '<script>';
?>
'heredoc'语法:
<?php
echo <<<EOF
<script>
var x = [{$somePHPvar}];
alert(x);
</script>
EOF;
?>
'html mode':
<?php ?>
<script>
var x = [<?php echo $somePHPVar ?>];
alert(x);
</script>
每个的加/减:
'
和"
),因此任何html看起来都更清晰。大多数编辑都会识别heredoc块中的PHP变量并对它们进行适当的着色,但文本的其余部分将被视为文本,因此javascript / html看起来相同。此外,您无法在文本中插入函数调用。您必须在启动heredoc之前执行这些操作,并将结果存储在可以插入的var中。 HEREDOC也可用于直接将长文本块分配给变量。htmlspecialchars()
,urlecncode()
,html_strip_tags()
等...),而无需将值存储在中间var中。它还使代码难以维护,因为您的PHP现在通过html / javascript代码随机播放。这一切都归结为您正在处理的特定代码最简单的事情。
答案 5 :(得分:0)
您可以使用模型 - 视图 - 控制器模式输出JavaScript。
您可以拥有一个“查看”文件,其中存储了大部分JS:
myJavascript.js.php:
alert('hello bob');
alert('hello <?php echo $name; ?>');
alert('whats up?');
您的控制器,jsController.php:
$name = "Jane";