2012-07-24 63 views
-1

我有一個PHP和Javascript變量通信的問題。我有這樣的代碼:PHP變量爲javascript,不起作用

<?php 
$php_var = 'lol'; 
?> 

<html> 
<script type="text/javascript" charset="utf-8"> 
var php_var = "<?php echo $php_var; ?>"; 

alert(php_var); 

</script> 
</html> 

由於某種原因,此代碼無效(按預期)。我無法將PHP變量的值傳遞給Javascript變量。出於某種原因,Javascript完全忽略了php標籤併爲php_var賦值「」。所以它提醒我把它作爲文字的PHP代碼。

我在做什麼錯?我一直被困在這個問題上3個小時。這是我的服務器的問題嗎? (使用虛擬主機,專用)。謝謝

+2

就這樣我們確定,你用'.php'擴展名命名文件正確嗎? – JaredMcAteer 2012-07-24 19:04:07

+0

這是一個.html文件 – Kalon 2012-07-24 19:05:28

+0

我能做些什麼來解決這個問題?使用AJAX? – Kalon 2012-07-24 19:06:32

回答

3

使用json_encode()以確保您得到一個有效的JavaScript表達式(否則字符,如換行符和引號將打破東西):

var php_var = <?php echo json_encode($php_var); ?>; 

你還需要確保PHP實際上是對文件中啓用。這通常通過給文件.php擴展來實現。

+0

如果您不需要JSON會怎麼樣? – nico 2012-07-24 19:06:33

+2

他需要一個JavaScript字符串。提供字符串時,'json_encode'將給他一個有效的JavaScript字符串。 – ThiefMaster 2012-07-24 19:06:55

+0

具有諷刺意味的是,當喂一個字符串時它不會給出有效的JSON :) – Quentin 2012-07-24 19:16:04

1

使用.php文件擴展名,這將工作。

如果沒有,那麼你的變量將不會有值,你可以通過使用類似螢火蟲的東西看到確切的問題。

+0

不,它不會,PHP不會在字符串內執行。 – nico 2012-07-24 19:07:58

+4

@nico - PHP中沒有任何字符串......除非你的意思是JavaScript字符串(在這種情況下你錯了,PHP不會因爲模板中有引號字符而拒絕進入代碼模式)。 – Quentin 2012-07-24 19:11:24

+0

@Quentin:我不好,你說得對 – nico 2012-07-24 19:14:39

1

你說你的代碼所在的文件有一個.html擴展名,它應該是.php來呈現php代碼。

+0

當然這不一定是真的。這取決於Web服務器配置。 – nico 2012-07-24 19:15:57

0

好了,你可以重命名文件,.PHP,它應該工作,或者你可以做以下的事情: 創建一個.htaccess文件, 添加如下代碼 - >

RewriteEngine On 
<FilesMatch "(file.html)"> 
    SetHandler php5-script 
</FilesMatch> 

保存文件, 然後在HTML文件中添加以下PHP線在beggining - > 比你可以編寫PHP代碼選擇HTML文件中

或者,您可以添加以下規則

RewriteEngine On 
file.html file.php