2010-11-20 65 views
0

在我的CakePHP應用程序中,我在某個控制器中創建會話變量,我需要在「.js」文件中訪問該變量。有沒有可能的方法來做到這一點?如何訪問CakePHP中的.js文件中的會話變量

+1

爲什麼呢?會話變量被設計爲* only *服務器端。 – strager 2010-11-20 06:22:04

+0

不應該直接在客戶端代碼中處理/訪問同意的會話變量或任何服務器端變量。我感覺更好通過他們就像我在我的回答 – 2010-11-20 10:33:14

+0

strager,sandeepan所做的:所以你說當我保存會話中的用戶名稱我不允許訪問該數據客戶端? – dogmatic69 2010-11-21 23:26:31

回答

2

我建議將它們作爲這樣的參數 -

<a onclick="some_function('<?php echo $_SESSION['var'] ?>')">Click</a> 

,並有javascript函數some_function()處理它,而不是將它們分配給內聯。這樣你可以從服務器端代碼中獲得免費的javascript文件。這是最乾淨的方式。

我也覺得因爲會話變量是服務器端,所以他們不應該通過內聯代碼直接在客戶端語言中處理。

+0

1

您需要動態生成您的JS文件,以便它包含所需的值。您可以設置您的服務器通過PHP解析.js文件,或者你可以命名的JS文件.php

var myVar = '<?php echo addslashes($_SESSION['myVar']); ?>'; 
+0

是js中PHP代碼的混合,是否符合編碼標準點?如果需要服務器端值而不是這樣做,讓js文件分開並將參數傳遞給js函數會不會更好? – 2010-11-20 09:54:12

+0

@sandeepan:當然,我最初會建議一個內聯腳本,但僅僅因爲OP提到了.js文件而編輯了我的答案。 – casablanca 2010-11-20 15:38:49

+1

直接使用$ _SESSION當你有會話助手時不是最佳實踐。使用PHP來推動資產更糟,它慢了一百萬倍,當瀏覽器緩存它時會發生什麼,或者你也會禁用它。 – dogmatic69 2010-11-21 23:31:00

相關問題