我有以下的javascript
html="<th>"+<?php echo __(); ?>+"</th>";
我想在to __()
函数中添加另一个javascript变量,如此
<?php echo __(<js varible>); ?>
我试过
var myvarible=200;
html="<th>"+<?php echo __("'"+myvarible+"'"); ?>+"</th>";
console.log(html);
不适合我
任何人都可以帮助我 问候
答案 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>
的这种才华
答案 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 __()。
有不同的可能策略