2011-04-27 65 views
0

我正在構建一個應用程序(字面上,一個在線應用程序),我想動態調用Js文件/函數只在需要時才播放。另外,這就是kicker,實際上我能夠將php變量和帶有返回值的函數傳遞給Js代碼。通過這種方式,傳遞的變量將在服務器端發生,而且我只能獲得當時需要的客戶端代碼。動態Javascript包括在PHP

爲此我正在考慮創建多個PHP文件那麼簡單包含以下內容:

<? 
//JS CODE FOR PAGE 1 (ETC.) 
//HEADER FUNCTIONS 
?> 
<script type="text/javascript"> 

//FUNCTIONS, METHODS, ETC WITH THE ABILITY TO INSERT PHP VARIABLES LIKE SO: 
var name = <?= $name ?> 

</script> 

沒有人有任何異議?爲什麼這不是管理Js代碼的有效方式,通過包含和傳遞數據來動態調用它?我沒有想到什麼?

+1

如果'name'是一個字符串,你應該這樣做:'var name =''' – 2011-04-27 14:13:18

+0

好的通話,我一定會這樣做,如果我最終走這條路線。 – d2burke 2011-04-27 14:14:19

回答

1

在我的應用我也只加載JS-文件,如果需要的話。我不知道你是否這樣做,但我正在使用MVC結構。因此,在預檢時,我正在檢查是否存在與我的控制器同名的js文件。這樣,如果控制器/動作確實需要它們,它們只會被加載。但是,這種方式我只包含靜態js文件,沒有任何動態的PHP變量。我想,我只是不需要到目前爲止;)

但讓你的js文件相關的控制器或控制器內的行動或兩者是一個非常好的方式來加載只有js文件,我真的需要。

+0

faileN - 這是一個偉大的想法!並且,是的,我正在使用MVC結構。不管這個問題的結果如何,我可能會開始使用這種方式進行組織,但是一旦將數據包含到Js文件中,您會怎麼看?其他建議的XML或Json對象,但爲什麼不按照我的建議打包呢? 使用你的想法,我甚至可以創建一種可以加載到控制器中的'庫'。想法? – d2burke 2011-04-27 14:21:47

+0

我想我更想看看我的方法有什麼缺點 – d2burke 2011-04-27 14:22:31

+0

我認爲你的想法,將數據填充到已包含的js文件中也是一個很酷的想法,只要它符合你的需求。正如我所提到的,到現在爲止我不需要這些東西。我只是想過做一些像'var foo = ;'這樣的缺點。我不知道這是否是一個問題,但據我所知Javascript會被緩存。這意味着如果你打電話給例如'myjsscript.php'(=發送js-Headers的PHP文件,所以瀏覽器認爲這是一個js文件)幾次,只改變你在js中使用的php-var,瀏覽器可能不會得到它,並導致錯誤的輸出。然而把... – 2011-04-27 18:47:41

0

也許你可以使用PHP的json_encode功能,使您的PHP對象可在JavaScript像<script type="text/javascript"> var name = <?= json_encode($name) ?>; </script>

+1

另外Xml-data將成爲可能,而不僅僅是json。 – 2011-04-27 14:16:46

+0

那麼,你是否建議我創建一個可以傳入正常引用的Js文件的全局變量? 這樣做似乎需要我像現在一樣鏈接我的Js文件,然後傳入此對象並解析它以獲取正確的值。這是你的意思嗎?似乎可行,但你爲什麼會建議你的方法副礦?哪個變得更有效率? – d2burke 2011-04-27 14:18:28