如何将值从php传递给javascript?我正在使用smarty,我试过这个,但js似乎把它当作一个字符串。该值设置为20.
$smarty->assign('settings', $settings); //$settings is an array
$ settings来自文件,基本上是一些设置。 我想在带有该值的html doc中选择一个选项,但它不起作用。
<select id="entrys">
<option>5</option>
<option>10</option>
<option>20</option>
</select>
然后在js文件中:
$(document).ready(function()
{
$('#entrys').val("{$settings['frontendEntrys']}");
});
但是没有选择任何选项,甚至没有第一个或默认值,如果我尝试打印{$ settings ['frontendEntrys']},它也无效。它似乎只是一个字符串。
顺便说一句:这是通过smarty或一般传递一些设置的好方法吗?如果我不使用smarty,我该如何传递值?这是正确的吗?这是一个好方法,如果它是在一个html文件中完成的吗?<script>
var data = <?php echo $settings['entrys']; ?>
</script>
答案 0 :(得分:3)
在smarty中你可以使用:{$myarray|@json_encode}
Howto generate json with smarty?
所以它可能是这样的:
<script>
var data = {$settings|@json_encode}
</script>
然后你可以在js中访问它,比如普通对象data.entrys;
更少php / js mishmash更清晰的js代码。
$('#entrys').val(data.entrys);
答案 1 :(得分:1)
在Smarty模板文件中定义全局JS变量:
<script>
_Entrys = {$settings['frontendEntrys']};
</script>
并使用JS文件:
$(document).ready(function()
{
$('#entrys').val(_Entrys);
});
答案 2 :(得分:1)
您可以使用此方法,它具有同步HTML和.ini设置的附加优势。
<select id="entrys">
{foreach $settings as $setting}
<option {if $setting == 'frontendEntrys'}selected{/if}>{$setting}</option>
{/foreach}
</select>