在php标签中包含javascript变量

时间:2011-07-08 06:09:16

标签: php javascript echo

我有以下的javascript

 html="<th>"+<?php echo __(); ?>+"</th>";

我想在to __()函数中添加另一个javascript变量,如此

<?php echo __(<js varible>); ?>

我试过

var myvarible=200;
html="<th>"+<?php echo __("'"+myvarible+"'"); ?>+"</th>";
console.log(html);

不适合我

任何人都可以帮助我 问候

6 个答案:

答案 0 :(得分:2)

var myvariable='<?php echo __("200"); ?>';
html="<th>"+myvariable+"</th>";
console.log(html);

然而,为了实现这一点,javascript将需要在正在解释的.php文件中。

  
    

OP希望在PHP调用中包含JS变量,这是不可能的,除非您使用AJAX。而且你会同意我的看法,这样的代码只会引起很大的麻烦,应该不惜一切代价避免。

  

是的,不是..我不会这样做。我使用帮助器,让我以一致的方式做这样的事情。在我的视图文件中,我有类似的内容:

<?php js_call('jslib.myFunction(?,?)', __($value), 'some other value'); ?>

js_call类似于使用sprintf或除js之外的预备语句。参数通过json_encode,所以引用和不正确。所有这些都存储在一个数组中,然后存储在布局中,就在我</body>之后调用:

<?php include_js_calls(); ?>
然后

接受我用js_call进行的所有调用,并在脚本标记内输出字符串值,结果如下:

<script type="text/javascript">
  jslib.myFunction('first value', 'some other value');
</script> 

借鉴Apostrophe Cms

的这种才华

答案 1 :(得分:2)

您对服务器端和客户端代码的工作方式存在误解。

你可能实现你想要做的事情的唯一方法(将PHP本地化函数应用于Javascript变量)就像这样(这段代码假设你使用的是JQuery,但也可以在没有它的情况下完成):< / p>

var myvariable = 'hello';
$.get('http://yoursite.com/localize.php?text='+myvariable, function(localizedText) {
  html = "<th>"+localizedText+"</th>";
  console.log(html);
});

然后localize.php看起来像这样:

<?php
include('you localization library');
echo __($_GET['text']);
?>

解释 :当您的客户端代码(Javascript)在浏览器中执行时,它将调用一个URL来执行您的服务器端代码(您的PHP __( );;)在服务器中,然后将值返回给客户端代码。

答案 2 :(得分:1)

var myvarible=200;
html="<th>"+<?php echo __("'"+myvarible+"'"); ?>+"</th>";
console.log(html);

这会尝试将PHP变量“myvariable”放入脚本标记中,您想要的更接近:

var myvarible=200;
html="<th>"+"<?php echo __("'myvarible'"); ?>"+"</th>";
console.log(html);

但是,在这种情况下,为什么不完全跳过PHP?

var myvarible=200;
html="<th>" + myvarible + "</th>";
console.log(html);

答案 3 :(得分:1)

Javascript在客户端运行,php在服务器端运行。 所以var myvarible=200; 将仅在客户端执行。

但将在服务器端执行。那时myvariable无效。

答案 4 :(得分:1)

PHP在服务器上执行,客户端上的JS。您不能指望PHP解析JS,事实上PHP永远不会看到JS语句,因为只有在服务器处理完PHP后才会处理它们。

答案 5 :(得分:1)

要在javascript中进行本地化(无论出于何种原因),显然不能直接调用echo __()。

有不同的可能策略

  • 页面加载时在javascript中包含本地化字符串表。在需要时进行查找。可以使用echo __()然后缓存在服务器端生成此表。
  • 对服务器本地化数据发出ajax请求。可能不适合频繁更新。