2012-04-12 114 views
0

在我的一個網站中,我需要使用PHP'foreach'來保持包含一些Javascript代碼。在這段代碼中包含在foreach循環內改變的PHP $變量。什麼是在PHP頁面中包含許多JavaScript函數(包含PHP)的最有效方法?

foreach ($a as $b) { 
    include("javascript.php"); 
} 

javascript.php包含的代碼是這樣的:

<script> 
    $(".<?php echo $somevariable?>").something; 
</script> 

我的問題是:什麼是最有效的(如果有的話)的方式來加載包含PHP變量的JavaScript?

我一直在閱讀,最好在.js腳本中調用大的JavaScript代碼,而不是在頁面上寫它,但顯然.js文件不能有PHP。

感謝您的洞察力。

+2

.js或任何文件,都可以在其中包含php,您只需告訴服務器將文件解析爲php – 2012-04-12 03:51:48

+0

謝謝,我該如何搜尋才能完成這項工作?它是我可以放在.js文件或.php文件中的簡單代碼行嗎? – 2012-04-12 03:53:19

+2

如果您的外部JS文件是動態生成的並隨每個請求發生更改,則會有*更多*開銷,而不是更少。將JS移動到包含文件的主要性能優勢在於它可以緩存在多個請求中。重要的是讓你的代碼安全和可維護。在你遇到性能問題之前,你不應該擔心做任何事情的最「有效」的方式,更不用說在你的頁面中包含JS了。 – meagar 2012-04-12 03:54:21

回答

1

這裏是辦法,我會用:

與包含JavaScript變量$ somevariable創建HTML文件:

<html> 
<head> 
    <script src="my_global.js"></script> 
</head> 
<body> 
    Foo 
<script> 
    var somevariable = "<?php echo $somevariable ?>"; 
</script> 
</body> 
</html> 

然後讓JavaScript文件訪問這個值,一旦頁面已經準備好(我「使用jQuery。就緒()M在本實施例中):

$(document).ready(function() { 
    alert(somevariable); 
}); 

這在動作:http://jsfiddle.net/2zeQM/

這允許JavaScript文件被緩存(它是靜態的而不是動態的)。動態數據加載到用戶請求的頁面上。

您確實需要注意,您使用的變量名不會被其他Javascript代碼重用。爲了防止出現問題,我會在變量名前加上前綴。例如,我可以將它稱爲「somevariable」,我可以稱它爲「xy_somevariable」

1

您可以添加:

header("Content-type: text/javascript"); 

到您的PHP文件的頂部,它會呈現爲一個.js文件。

+4

這不是必需的;通過''包括文件是所有必要的。 – meagar 2012-04-12 04:00:00

+1

真的嗎?哇,那真是太棒了。 – 2012-04-12 04:05:16

相關問題