Включить переменную javascript в теги php - PullRequest
2 голосов
/ 08 июля 2011

у меня есть JavaScript, как показано ниже

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

Я хочу добавить еще одну переменную javascript внутри to __() функции, подобной этой

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

Я пытался

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

не работает для меня

Может кто-нибудь помочь мне, пожалуйста С уважением

Ответы [ 6 ]

2 голосов
/ 08 июля 2011

Вы неправильно понимаете, как работает код на стороне сервера и на стороне клиента.

Единственный способ, которым вы можете достичь того, что вы пытаетесь сделать (применить функцию локализации PHP к переменной Javascript), будетвот так (этот код предполагает, что вы используете JQuery, но можно и без него):

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 голосов
/ 08 июля 2011
var myvariable='<?php echo __("200"); ?>';
html="<th>"+myvariable+"</th>";
console.log(html);

Однако, чтобы это работало, javascript должен быть в файле .php, который интерпретируется.

ОП хочет включить переменную JS в вызов PHP, что невозможно, если вы не используете 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> 

Заимствовал этот блеск у Апостроф Cms

1 голос
/ 08 июля 2011

Чтобы выполнить локализацию в javascript (по любой причине), echo __ (), очевидно, не может быть вызван напрямую.

Существуют различные возможные стратегии

  • Включить таблицу строк локализации в javascript при загрузке страницы. Сделайте поиск против этого когда необходимо. Эта таблица может быть сгенерирована на стороне сервера с помощью echo __ (), а затем кэширована.
  • Делать ajax-запросы для локализованных на сервере данных. Может не подходить для частых обновлений.
1 голос
/ 08 июля 2011

PHP выполняется на сервере, JS на клиенте. Вы не можете ожидать, что PHP проанализирует JS, фактически PHP никогда не увидит операторы JS, потому что они будут обработаны только после того, как сервер обработает PHP.

1 голос
/ 08 июля 2011

Javascript работает на стороне клиента и php на стороне сервера. Итак var myvarible=200; будет выполняться только на стороне клиента.

, но будет выполняться на стороне сервера. в это время myvariable не будет действительным.

1 голос
/ 08 июля 2011
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...