我的php从数据库生成一些类型,并传递给Smarty变量$ X。
在Jquery的帮助下,我希望能够点击一个按钮,我的一个div的内容将被$ X替换。
$(document).ready(function(){
$("button").click(function(){
$("#div1").html($X);
});
});
这段Jquery脚本包含在外部js文件中。
答案 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或其他将使用单/双引号的文本。