将变量PHP Smarty传递给Javascript

时间:2016-10-07 10:01:47

标签: javascript php smarty

在我们的网页中,我们需要访问javascript代码中的PHP变量。具体来说,我们需要传递一个参数,该参数是由名为$ link_es

的PHP变量定义的URL

我已经尝试过这样做了

var r_obj = {
"Company": { "CompanyId": xxxxxx },
"RatingboxId": xxxxx,
"ProductCode": encodeURIComponent($link_es),

其中$ link_es是存储在我们需要作为参数传递的变量中的URL。

我怎么能传递那个参数?也就是说,我怎样才能将PHP变量转换为Javascript变量?谢谢。

PD:我使用的是Smarty PHP,因此可能存在一些问题。

9 个答案:

答案 0 :(得分:1)

如果脚本在tpl文件中,那就像分配给javascript变量一样简单:

<script>
var link_es = '{$link_es}';
//do whatever you want with it
alert(link_es);    
</script>

确保javascript代码不在{literal}标签之间,但

答案 1 :(得分:0)

只需添加此1) n[i] is divisible by 2 only 2) n[i] is divisible by 3 only 3) n[i] is divisible by 5 only 4) n[i] is divisible by 2 and 3 5) n[i] is divisible by 3 and 5 6) n[i] is divisible by 2 and 5 7) n[i] is divisible by 2, 3 and 5 即可将变量反映到javascript中。

答案 2 :(得分:0)

尝试制作一个预定义的javascript变量,其值由PHP设置

<script>
var link_es = "<?php echo $link_es ?>";
</script>

答案 3 :(得分:0)

尝试

"ProductCode": encodeURIComponent(<?= $link_es ?>)

答案 4 :(得分:0)

一种方法是在PHP文件中使用类似的东西:

<script>
var myVar = <?php echo $link_es; ?>;
</script>

答案 5 :(得分:0)

在这种情况下,您可以按照以下方式工作:

在PHP文件中添加以下代码

<script>
     var jsVariable = <?php echo $phpVariable ?>;
</script>

在js文件中可以简单地访问变量,如下所示:

console.log(jsVariable);

如果你想首先传递一个数组应该是json_encode,如下所示:

<script>
     var jsVariable = <?php echo json_encode($phpVariable) ?>;
</script>

在这种情况下,您在javascript中有一个对象,并使用console.log

进行跟踪

答案 6 :(得分:0)

案例1 如果您在Php页面上编写javascript,那么您可以使用传递它

"ProductCode": encodeURIComponent('<?= $link_es ?>'),

案例2 如果您有单独的javascript文件,那么您必须在php文件中定义全局变量,然后您可以在js文件中访问它。

<script>
     var jsVariable = <?php echo json_encode($link_es) ?>;
</script>

在案例2中,我个人习惯将这个值存储在隐藏字段中,并带有一些id然后我在js文件中使用它

<input type="hidden" id="link_es" value="<?= $link_es ?>" />

//then in js file access like this

"ProductCode": encodeURIComponent($("#link_es").val()),

答案 7 :(得分:0)

我自己终于找到了解决方案。它由以下内容组成:

首先,我们包含一个div标签,如下所示

<div id='linkespanol' style="display: none;">
{$link_es}
</div>

稍后,在脚本内部,我们可以访问完整的URL

var a = window.location.href.split("/")[0];
var b = window.location.href.split("/")[2];
var c = a+"//"+b;
var linkidioma = c+document.getElementById('linkespanol').textContent.trim();

变量$ link_es不包含完整的URL,但是/es/productCode.html为了生成完整的URL,我使用window.location.href从当前URL获取我想要的内容,最后连接两者。我使用trim来摆脱一些空白。

它可能是一个非常糟糕的解决方案,但有效。可能,不使用Smarty,可能会有一种更简单的方式。

答案 8 :(得分:-1)

没有一个建议的答案有帮助,我最终这样做了。

var data= JSON.parse('{$data|@json_encode|@addslashes}');