2011-04-02 64 views
0

*編輯:當我試圖調試另一個問題這種特定情況下被創造了,這裏是我的問題的更詳細說明:Why is javascript not able to use a javascript variable I declared in a php file?爲什麼javascript不能識別php代碼?

這裏的問題:

我有中下面的PHP代碼一個JavaScript文件,但它不會編譯。當它傳遞給函數placem時,底部會使用變量simple:

<?php $simpleString = "i hope this works"; ?> 


var simple = "<?php echo $simpleString; ?>"; 

window['mod0_2']= -.0015138; 
window['mod1_2']= -.3424094; 
window['mod2_2']= .40461099; 

window['lla0_2']= 43.6124872; 
window['lla1_2']= -116.20349; 
window['lla2_2']= 821.802867; 

window['publica2'] = new modd('milktruck','publica2',modScaler,'shadowrect3',1); 

placem('p2','pp2', simple, window['lla0_2'],window['lla1_2'],window['lla2_2']); 
+3

你會得到什麼錯誤?輸出是什麼樣的? – 2011-04-02 23:56:27

+2

是否解析了php代碼?如果將其另存爲.js文件,則標準配置的Web服務器可能無法解析它。 – Eliasdx 2011-04-02 23:57:21

+0

您是在瀏覽器上執行JavaScript代碼,還是在像[v8](http://code.google.com/p/v8/)或[node.js](http://nodejs.org/)這樣的工具中執行JavaScript代碼。 )在你的服務器上?你知道沒有主流瀏覽器帶有PHP解釋器,對吧? – sarnold 2011-04-02 23:57:58

回答

2

典型的情況是將HTML,JavaScript和PHP(或其他服務器保持擴展名爲.js端編程語言/技術)託管在服務器上。然後您將使用另一臺機器的網絡瀏覽器訪問該網站。再次,這是典型的情況。所有這些組件都可以存在於同一臺機器上。

在開源世界中,最流行的Web服務器稱爲Apache。 Apache有一個模塊(稱爲mod_php),用於解釋PHP代碼,執行它並返回其輸出。 (對於其他編程語言,模塊確實存在,但我不會去了解它。)

有兩種基本方法可以完成你想要完成的任務,都有其優點和缺點。

1)配置mod_php來解釋* .js文件,就好像它們是PHP文件一樣。

2)將您的JavaScript文件創建爲PHP文件。這與從PHP文件提供HTML的方式相同。 PHP代碼可以在同一個文件中與HTML混合。標籤<?php ... ?>指定應該由mod_php解釋的PHP代碼。其他一切只是作爲輸出發送到瀏覽器。

這是一個非常簡單的HTML頁面的一個很簡單的例子,用PHP用於提供<title>標籤的內容:這將出現在服務器上的PHP文件

<html> 
<head> 
<title> 
<?php echo 'Hello world'; ?> 
</title> 
</head> 
<body> 
</body> 
</html> 

。在瀏覽器中,生成的HTML源代碼如下所示。 (也就是說,如果你做了頁面上的「查看源文件」頁面本身會出現空白,標題欄將包含詞:你好,世界)

<html> 
<head> 
<title> 
Hello world 
</title> 
</head> 
<body> 
</body> 
</html> 

這也可以用JavaScript實現,而不是的HTML。要記住的重要一點是這個文件有兩個視圖。其中之一是您在查看原始文件時看到的內容。另一個是在執行PHP並將輸出返回給瀏覽器之後該文件的外觀。你基本上做的是將PHP的輸出與HTML/JavaScript結合起來,形成發送給瀏覽器顯示的最終輸出。

+0

關於此問題的一個注意事項:根據您提出的另一個問題,我看到您正在使用GoDaddy帳戶。我非常肯定,這意味着您無法配置Apache來將JavaScript源文件解釋爲PHP。 – 2011-04-03 00:44:43

7

您是否在.js文件中使用PHP?如果是這樣,Javascript運行在PHP運行在服務器上的客戶端。如果您想要以Javascript文件執行PHP,則必須將該文件重命名爲.php,並將該新PHP文件包含到您的HTML中。

+0

將php文件包含到html中意味着什麼?哪個文件重命名爲.php,javascript文件?那麼我會將milktruck.js重命名爲milktruck.php並刪除舊的milktruck.js? – user671891 2011-04-03 00:03:47

+0

@ user671891:如果您需要PHP代碼在'.js'中解釋文件,然後你需要配置你的web服務器在將它們提供給客戶端之前通過PHP解釋器運行'.js'文件,或者將'.js'文件重命名爲'.php'文件。前者是更復雜的是,後者支持的直觀性較差 – David 2011-04-03 00:06:24

+0

是的,如果你想在.js文件中執行PHP,那麼把這個milktruck.js重命名爲milktruck.php,比包含 2011-04-03 00:07:52

1

milktruck.php

<?php 
$simpleString = "i hope this works"; 

echo 'var simple = "'.$simpleString.'"; 

window[\'mod0_2\']= -.0015138; 
window[\'mod1_2\']= -.3424094; 
window[\'mod2_2\']= .40461099; 

window[\'lla0_2\']= 43.6124872; 
window[\'lla1_2\']= -116.20349; 
window[\'lla2_2\']= 821.802867; 

window[\'publica2\'] = new modd(\'milktruck\',\'publica2\',modScaler,\'shadowrect3\',1); 

placem(\'p2\',\'pp2\', simple, window[\'lla0_2\'],window[\'lla1_2\'],window[\'lla2_2\']);'; 

?> 


<script src="milktruck.php"></script> 

你可以利用的htaccess的和有一些modrewrites

+0

爲什麼你只是不會在做一個長長的文本塊之前就用''>''來擺脫PHP模式呢?這將節省你必須逃避每一個單引號。僅僅因爲你可以用PHP打印/回聲輸出文本並不意味着你應該。如果你立即在PHP中做這樣的事情,至少應該使用HEREDOC。 – 2011-04-03 02:17:37

+0

這是一個示例... – 2011-04-03 02:26:23