2011-07-08 110 views
2

我的JavaScript如下包含PHP标签内的JavaScript变量

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

我想补充另一个JavaScript变量中to __()功能这样

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

我试图

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

不为我工作

任何一个可以帮助我,请 问候

+0

echo __()是symfony定位函数必须使用它 –

+0

也许你应该更好地解释你想要实现的。一般来说,当你认为你需要混合JS和PHP时,一个大红色的警报灯应该开始闪烁,你应该开始重新思考你的策略。 – nico

+0

你可以发布你的实际代码(你使用的代码)..可能是这将有助于更好地理解你正在尝试实现什么和你已经使用什么方法... –

回答

2

您对服务器端和客户端代码的工作方式存在误解。 (这段代码假设你使用的是JQuery,但是也可以在没有它的情况下完成):你可以使用JQuery来完成你想要做的事情(将PHP本地化函数应用于一个Javascript变量):

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)的蜂n在浏览器中执行它会调用一个URL来执行你的服务器端代码(你的PHP __();函数),然后将值返回给客户端代码。

+0

感谢亲爱的.. –

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); 
+0

我不能跳过它__echo()是本地化函数在symfony –

+0

什么是在这种情况下本地化?正如其他地方指出的那样,JS无法看到/使用PHP本地化,并且PHP无法看到/本地化JS变量 –

+0

为什么要尝试本地化整数? – prodigitalson

1

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

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

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

但是,对于这个工作,JavaScript将需要在一个.php文件被解释。

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

嗯是的和不..我不会这样做。我使用一个帮助器,让我以一致的方式做这样的事情。在我看来,我的文件有类似:

<?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

+0

这不会执行PHP语句。 – nico

+0

它将如果它在一个脚本标签内的PHP文件...这是国际海事组织唯一理解什么是OP张贴:-)它的同样作为回声'json_decode'输出到脚本标记你的头从服务器上处理页面时创建的动态php变量中配置一些js ... – prodigitalson

+0

不,它不会在JS字符串中有''?'标记,只会在客户端解析。 – nico

1

PHP这个辉煌是在服务器,JS在客户端上执行。你不能指望PHP解析JS,实际上PHP永远不会看到JS语句,因为只有服务器处理完PHP后才会处理它们。

1

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

有不同的可能策略

  • 在JavaScript页面加载时包括一个本地化字符串表。在需要时查找它。这个表可以在服务器端使用echo __()然后被缓存来生成。
  • 对服务器本地化的数据发出ajax请求。可能不适合频繁更新。