2013-01-17 68 views
0

通常,當我需要使用一些PHP在javascript代碼,我用它來把代碼放到頭是這樣的:如何在外部JavaScript代碼中使用php變量?

<script> 
    $(function() { 

    $("input#datepicker").val('<?php echo $date ?>'); 
}); 
</script> 

這樣一來,我可以在JavaScript代碼中使用一些PHP變量。它工作正常。

你知道如何做到這一點,如果我希望把所有的JavaScript代碼在外部js文件:

<script type="text/javascript" src="js/admin.js"></script> 

也許它不會在所有問題。但我用代碼在一個外部的js文件,我想知道是否有可能做到這一點。

+0

擴展事宜。 'admin.js.php' – Mathletics

+1

我想這樣做一次,並被勸說不要。問題是(a)必須通過PHP解析器放置.js文件,(b)需要採取措施來避免緩存。 –

+1

http://stackoverflow.com/questions/11206599/placing-php-variables-inside-javascript-file –

回答

4

您需要將js文件製作成php文件。

<script type="text/javascript" src="js/admin.php"></script> 

如果你仍然想保留js擴展名,你需要爲你的web服務器重寫。

JS/admin.php的

<?php 
header("content-type: text/javascript"); 
?> 
$(function() { 
    $("input#datepicker").val('<?php echo $date ?>'); 
}); 

,如果你想在這裏的JS擴展就是一個例子重寫。

Nginx的

rewrite /js/admin.js /js/admin.php; 

阿帕奇

RewriteEngine On 
RewriteBase/
rewrite /js/admin.js /js/admin.php; 
+0

在admin.php(帶.php)中,我需要使用? –

+1

不,你會使用它像一個正常的js文件與PHP中它 –

+0

$ date仍然會被設置? – danronmoon

1

這是更好地緩存您的JS到客戶端瀏覽器,並只發送變量客戶端。如果您將所有js作爲新的回覆,則可以使用 。考慮帶寬和對您的Web服務器的另一個請求。

<script type="text/javascript" src="js/admin.js"></script> 
<script type="text/javascript"> 
    var myVar = <?php echo json_encode($myVar); ?>; 

    myAdminFunction(myVar); 
</script> 
相關問題