php-在jQuery函数中使用smarty变量

我的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或使用单引号/双引号的其他文本位的情况下.

上一篇:PHP中的会话间变量


下一篇:PHP替换Word文档中的变量