在JavaScript中显示变量

时间:2015-11-05 14:04:34

标签: javascript php smarty

我想用变量更改脚本内的超链接。它是FB SDK,我想用用户在我网站上选择的语言显示SDK。

变量为{$lang_fb}并返回正确的结果(此处为:en_US),如果我在普通的php中使用它。

如果我在纯HTML页面上的脚本中使用变量,则没有结果。

剧本:

<script>
(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/{$lang_fb}/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
<script>

会在页面中生成相同的代码

我该怎么办?

4 个答案:

答案 0 :(得分:1)

如果您使用的是PHP脚本,则需要放置php标记或转义字符串。

方式一

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/<?php echo {$lang_fb} ?>/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

方式二

<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/".{$lang_fb}."/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

如果您不分享更多代码,我们无法查看会发生什么。

答案 1 :(得分:1)

解决方案:

 js.src = "//connect.facebook.net/{/literal}{$lang_fb}{literal}/sdk.js#xfbml=1&version=v2.5&appId=1234567890";

感谢您的帮助!!!

答案 2 :(得分:0)

由于您使用的文件扩展名与PHP无关,因此您需要setup php to process this extension

对于apache,您可以使用文件.htaccess执行此操作:

AddHandler application/x-httpd-php .tpl

当然,您还需要require创建{$lang_fb}的Facebook SDK。

答案 3 :(得分:-2)

$lang_fb是一个php变量,无法在javascript中运行。你是否在php文件中嵌入脚本标签?如果是,那么您可以简单地使用以下内容:

<script>
    (function(d, s, id) {
      var js, fjs = d.getElementsByTagName(s)[0];
      if (d.getElementById(id)) return;
      js = d.createElement(s); js.id = id;
      js.src = "//connect.facebook.net/"+<?php echo $lang_fb; ?>+"/sdk.js#xfbml=1&version=v2.5&appId=01234567890";
      fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));
</script>