如果你有一個可以輸出PHP-> Smarty分配變量的模板文件,你可以做的就是在模板中創建一個全局JS變量,然後在你的JS中使用這個全局變量。
如:
模板文件
<script type="text/javascript">
var MyGlobalVar = "{$MyGlobalVar}";
</script>
Global.js文件
$(document).ready(function(){
$("button").click(function(){
if (MyGlobalVar != '') {
$("#div1").html(MyGlobalVar);
} else {
alert('Error! Error! Abort!');
}
});
});
注意,你可以輸出Global.js它被解析的文件Smarty(儘管...這可能不是一個好主意),並以這種方式注入你的PHP-> Smarty變量。這會將Global.js包含的文件視爲Smarty模板。
要這樣做,您需要使用{literal}
,可能需要使用.php文件命名文件(因此它是PHP可解析的),並添加一個PHP header()
調用,以便PHP將文件內容輸出到瀏覽器一個Javascript內容類型。
Global.js
<?php
header("content-type: text/javascript");
?>
var MyGlobalVar = "{$MyGlobalVar}";
{literal}
$(document).ready(function(){
$("button").click(function(){
if (MyGlobalVar != '') {
$("#div1").html(MyGlobalVar);
} else {
alert('Error! Error! Abort!');
}
});
});
{/literal}
此外,在PHP端,你可能要考慮添加斜線到您的變量,尤其是如果JS變量包含HTML或將使用文本的其他位單/雙引號。
這就像一個魅力! 非常令人印象深刻。 所以我的理解是,如果你想在JS中使用smarty變量,那麼當tpl被解析時,你必須將它傳遞給TPL頁面上的JS變量。 我正在探索將它作爲參數傳遞,'因爲我不喜歡全局變量 – 2011-05-29 07:49:42
是的,一個Smarty變量本質上與PHP變量沒有什麼不同(例如,Smarty編譯爲PHP)。您所需要的只是某個頁面由您的Smarty解析器解析。此外,如果這回答您的問題,請點擊問題旁邊的空白箭頭和投票計數下方的接受答案。 :) – 2011-05-29 13:37:26