在jQuery函数中使用smarty变量

Using smarty variable within a jQuery Function

本文关键字:smarty 变量 jQuery 函数      更新时间:2023-09-26

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

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

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

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

如果您有一个经过解析的模板文件,可以在其中输出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!');
        }
    });
});

注意,您可以在Smarty解析Global.js文件的情况下输出该文件(尽管……这可能不是一个好主意),并以这种方式注入您的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或其他使用单引号/双引号的文本时。