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