在PHP中加入javascript的最佳方法?

时间:2010-03-25 19:00:27

标签: php javascript

这是我目前的做法。

 <?php
//show footer
echo "<script type='text/javascript'>\n";
echo "alert('Congrats');\n";
echo "</script>";

?>

有没有比回应它更好的方法?

6 个答案:

答案 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>

每个的加/减:

  1. 纯php:您可以保持PHP模式,并且您的echo + $ vars将突出显示为PHP代码,但您回显的html / javascript将被视为纯文本并且如此着色(即:所有相同的颜色)
  2. heredoc语法:你保持PHP模式,但是不需要在代码中转义任何引号('"),因此任何html看起来都更清晰。大多数编辑都会识别heredoc块中的PHP变量并对它们进行适当的着色,但文本的其余部分将被视为文本,因此javascript / html看起来相同。此外,您无法在文本中插入函数调用。您必须在启动heredoc之前执行这些操作,并将结果存储在可以插入的var中。 HEREDOC也可用于直接将长文本块分配给变量。
  3. 'html mode':编辑器将查看/识别你的html,javascript和php并适当地为它们着色。但这是以必须在任何需要动态填充某些值的地方撒上php打开/关闭标记为代价的。从好的方面来说,您可以直接插入函数调用结果(htmlspecialchars()urlecncode()html_strip_tags()等...),而无需将值存储在中间var中。它还使代码难以维护,因为您的PHP现在通过html / javascript代码随机播放。
  4. 这一切都归结为您正在处理的特定代码最简单的事情。

答案 5 :(得分:0)

您可以使用模型 - 视图 - 控制器模式输出JavaScript。

您可以拥有一个“查看”文件,其中存储了大部分JS:

myJavascript.js.php:

alert('hello bob');
alert('hello <?php echo $name; ?>');
alert('whats up?');

您的控制器,jsController.php:

$name = "Jane";