我有一个网站,其中包括一个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方法有效?
答案 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标记