组织包含php和javascript文件的代码

时间:2009-10-02 09:42:42

标签: php javascript

我有一个网站,其中包括一个php库文件和一个javascript库文件。我已将问题浓缩为以下文件:

的index.php

<?php
  include('constants.php');
?>
<html>
  <head>
    <script type="text/javascript" src="lib.js"></script>
  </head>
  <body onload="javascript:show_const_1('<?php echo(CONST_TEXT); ?>');
                           show_const_2();">
    Some text here
  </body>
</html>

constants.php

<?php
  define('CONST_TEXT', 'Hello World');
?>

lib.js

function show_const_1(string)
{
  alert(string);
}

function show_const_2()
{
  alert('<?php echo(CONST_TEXT); ?>');
}

结果是,当页面加载时,我得到两个消息框。第一个说“Hello World”,第二个说“&lt;?php echo(CONST_TEXT);?&gt;”。第一个javascript方法做了我想要的,但是我将在整个站点的许多地方使用该函数,所以理想情况下我不希望每次都将常量作为参数传递。

有没有一种方法可以重新排列代码以使第二个javascript方法有效?

2 个答案:

答案 0 :(得分:4)

简单的答案是将“lib.js”重命名为“lib.php”。

您还应该添加

header('Content-type: text/javascript');

到文件的顶部。

顺便提一下,您应该让我们json_encode()将文字输出到javascript:

alert(<?php echo json_encode(CONST_TEXT); ?>);

并且“javascript:”不属于事件属性(无论如何都是过时的):

<body onload="doSomething();">

答案 1 :(得分:2)

alert()中的方法体不是由PHP解释的(它是由Javascript解释的),所以你不能在其中加入PHP标记