2009-10-02 56 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