2009-10-02 46 views
0

我有一个网站,我包括一个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”,第二个是“<?php echo(CONST_TEXT);?>”。第一个javascript方法做到了我想要的,但是我将在整个网站的许多地方使用该函数,因此理想情况下我不希望每次都要将常量作为参数传递。

是否有重新排列代码以使第二个javascript方法有效的好方法?

回答

4

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

您还应该添加

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

到文件的顶部。

顺便说一句,你应该我们json_encode()输出文本的javascript:

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

与 “JavaScript的:” 在事件不属于属性(这是kindof过时反正):

<body onload="doSomething();"> 
+0

JavaScript的MIME类型现在是* application/javascript *。 – Gumbo 2009-10-02 10:05:49

+0

很多有用的评论 - 谢谢。 PHP现在正在lib.php中执行,但常量CONST_TEXT似乎没有在lib.php中定义。 php <?php echo CONST_TEXT; ?>导致字符串“CONST_TEXT”(与“Hello World”相对)。 – tttppp 2009-10-02 10:38:22

+0

您可能需要包含()您在 – Greg 2009-10-02 10:45:39

2

alert()该方法的主体不是由PHP(它是由Java脚本解释)解释,所以你不能把PHP标签在它

+0

的以下在php文件中工作正常: alert('<?php echo 123;?>'); – tttppp 2009-10-02 10:28:31