2013-06-05 53 views
11

我有一個PHP變量:如何將PHP變量的值傳遞給jQuery的

$name_of_current_page 

,我有我的觀點可用,我想提供給jQuery的價值。最好的辦法是像下面這樣做嗎?

$(document).ready(function() { 
      var current page = "<?php echo $name_of_current_page; ?>" ; 

}); 
+4

是的。至少是最簡單的。你可能會過於複雜,這是你想通過向服務器發送一個AJAX請求來獲取數據,然後以這種方式加載你的變量。 –

+1

也許不是最好的,但工作正常:) – PiLHA

+0

可能的重複[如何將PHP變量傳遞給Javascript](http://stackoverflow.com/questions/4742515/how-to-pass-a-php-variable-to -javascript) –

回答

20

這真的取決於如果您使用某種形式模板引擎。

  1. 如果您使用純PHP,你唯一的選擇就是echo變量:

    var current page = "<?php echo $your_var; ?>"; 
    
  2. Twig引擎:

    var current page = "{{ your_var }}"; 
    
  3. SmartyRainTPL引擎:

    var current page = "{$your_var}"; 
    

正如你所看到的,還有其他方法。他們都工作得很好。這真的取決於你想如何編寫和組織你的代碼。我親自使用Twig,並發現它非常簡單,快速和直接。另外,正如其他人指出的那樣,您可以對服務器執行AJAX調用並獲取像這樣的變量。我發現這種方法耗時,效率低下,不安全。如果您選擇此方法,您將會將請求發佈到腳本。每個人都可以對該腳本發佈/獲取請求,從而爲某些機器人和DoS/DDoS攻擊打開大門。

+0

說使用AJAX可以爲機器人打開大門,DoS類似於說把任何東西放在網上打開大門。雖然事實上,這是真的,但有很多理由使用AJAX將數據拖入JavaScript。每個主要網站,像谷歌,Facebook等IDK。做這個。 把一個簡單的index.php放在那裏用<?php echo「Hello World」;他打開DoS攻擊。如果他的網絡服務設計得當,那麼他不必擔心(儘可能多的)有人獲得他的數據。 –

+0

@MichaelRice不會誤解我的意思 - 使用AJAX非常棒。但它引發了一些問題。所以應該明智地使用它。比較谷歌,Facebook等可能是一箇中小型網站是錯誤的。谷歌可以負擔得起這些服務,因爲他們擁有無限制的系統資源,一眼就能處理機器人/ DoS/DDoS,而中小型網站只是簡單的離線。 – tftd

0

document.title應該給你你需要什麼..這樣的事情無論是查詢DOM或阿賈克斯恕我直言。

我覺得最好分離圖層,而不是混合演示文稿和控制器與胡椒的HTML/PHP代碼。

+0

'$ name_of_current_page'不一定是指'document.title'。 – furas

+0

@furas這又是什麼意思? –

+1

'

name_of_current_page

'或因爲某些搜索引擎優化的原因可以在'title =「...」'或'alt =「..」''等多個標籤中使用) – furas

3

var 當前頁面 =「」;

我不認爲你可以在變量中有空格。 (我可能是錯的)。

無論如何爲了簡化你的代碼,我只是稍微重做了一遍。

$name_of_current_page = "HomePage"; 

而對於Javascript;

var currentPage = "<?= $name_of_current_page; ?>"; 

應該是這樣。

+2

你可以在你的變量中有空格。 php標籤的Exept是正確的方法。你最好不要在PHP中使用短標籤。而不是「<?=」使用「<?php」[PHP 6正式廢棄短標籤]如果我對此正確 –

+0

@RensTillmann我發現的一些內容表明它是短php標籤('')那麼正在被刪除,而短的_echo_標籤('')留在。你有一個官方資源的鏈接? – Izkata

+0

對,沒有足夠好的閱讀源代碼:http://www.php.net/~derick/meeting-notes.html - (自PHP 5.4.0起,<?=總是可用) –

0

首先,你問的是填充客戶端代碼的正常方式,但是這個將在頁面加載時加載,如果你想在加載頁面的時候直接運行它,你必須使用ajax,原因是你將如何與服務器端腳本交流的方式,是不可能的jquery或JavaScript加載頁面已加載的現場php變量