在jQuery函数中使用smarty变量

时间:2011-05-28 18:49:28

标签: php javascript jquery variables smarty

我的php从数据库生成一些类型,并传递给Smarty变量$ X。

在Jquery的帮助下,我希望能够点击一个按钮,我的一个div的内容将被$ X替换。

$(document).ready(function(){
  $("button").click(function(){
    $("#div1").html($X);
   });
});

这段Jquery脚本包含在外部js文件中。

1 个答案:

答案 0 :(得分:4)

如果您有一个解析的模板文件,您可以在其中输出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-&gt; 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或其他将使用单/双引号的文本。