2016-10-07 2 views
0

На нашей веб-странице нам нужно получить доступ к переменной PHP внутри кода javascript. В частности, нам нужно передать параметр, который является URL определяется переменной PHP называется $ link_esПеременные переменные PHP Smarty для Javascript

Я пытался делать это

var r_obj = { 
"Company": { "CompanyId": xxxxxx }, 
"RatingboxId": xxxxx, 
"ProductCode": encodeURIComponent($link_es), 

где $ link_es является URL-адрес, сохраненный в переменной, что нам нужно для передачи в качестве параметра.

Как передать этот параметр? То есть, как я мог преобразовать переменную PHP в Javascript? Спасибо.

PD: Я использую Smarty PHP, поэтому там могут быть некоторые проблемы.

+2

Возможный дубликат [Как передать переменные и данные из PHP в JavaScript?] (Http://stackoverflow.com/questions/23740548/how-to-pass-variables-and-data-from-php -to-javascript) – Epodax

+0

Любой из приведенных ниже комментариев кажется работающим, возможно, потому что я использую шаблон Smarty – user6375350

+0

Код находится внутри файла .js, шаблона smarty, php-файла? – Borgtex

ответ

0

Просто добавьте это <?php echo $link_es; ?>. Это выведет переменную в javascript.

0

Попробуйте сделать предварительно определенную яваскрипта переменную, значение которой устанавливается PHP

<script> 
var link_es = "<?php echo $link_es ?>"; 
</script> 
0

Попробуйте

"ProductCode": encodeURIComponent(<?= $link_es ?>) 
0

Одним из способов было бы использовать что-то вроде этого в вашем PHP файл:

<script> 
var myVar = <?php echo $link_es; ?>; 
</script> 
0

В этом случае вы можете работать следующим образом:

Добавить следующий код в ваш PHP файл

<script> 
    var jsVariable = <?php echo $phpVariable ?>; 
</script> 

А в JS файл может просто получить доступ к переменной следующим образом:

console.log(jsVariable); 

Если вы хотите передать массив первым должен json_encode, что как последующие:

<script> 
    var jsVariable = <?php echo json_encode($phpVariable) ?>; 
</script> 

в этом случае у вас есть объект в JavaScript, который и проследить, что с console.log

0

Случай 1 Если вы пишете JavaScript на Php странице, то вы можете использовать передать его как

"ProductCode": encodeURIComponent('<?= $link_es ?>'), 

Случай 2 если у вас есть отдельный файла JavaScript, то вы должны определить глобальную переменную в файле PHP то вы можете получить доступ к этому в своем js-файле.

<script> 
    var jsVariable = <?php echo json_encode($link_es) ?>; 
</script> 

В случае 2, я лично использовал, чтобы сохранить это значение в скрытом поле с некоторым идентификатором, то я использую его в JS файла

<input type="hidden" id="link_es" value="<?= $link_es ?>" /> 

//then in js file access like this 

"ProductCode": encodeURIComponent($("#link_es").val()), 
0

я сам, наконец, нашел решение.Она состоит из следующих действий:

Прежде всего, мы включаем Div тег, как ниже

<div id='linkespanol' style="display: none;"> 
{$link_es} 
</div> 

Позже, внутри сценария, мы можем получить доступ к полному URL, как этот

var a = window.location.href.split("/")[0]; 
var b = window.location.href.split("/")[2]; 
var c = a+"//"+b; 
var linkidioma = c+document.getElementById('linkespanol').textContent.trim(); 

Переменная $ link_es не содержит полный URL-адрес, но /es/productCode.html, поэтому для генерации полного URL-адреса я использую window.location.href, чтобы получить то, что я хочу, из текущего URL-адреса и, наконец, объединить оба. Я использую trim, чтобы избавиться от некоторых пробелов.

Возможно, это довольно плохое решение, но работает. Возможно, без использования Smarty может быть более простой способ.

+0

. Вы слишком смущаете его, пожалуйста, посмотрите мой ответ. – Borgtex

1

Если скрипт находится внутри TPL файла, это так просто, как назначение его переменной JavaScript:

<script> 
var link_es = '{$link_es}'; 
//do whatever you want with it 
alert(link_es);  
</script> 

убедитесь, что Javascript код не между {буквального} тегами, хотя

+0

Что делать, если код javascript находится внутри '{literal}'? Я столкнулся с такой же проблемой. –

+0

просто определите переменную перед литеральным блоком или закройте литеральный блок с помощью {/ literal}, определите переменную и снова откройте {literal}. Кроме того, если вы используете smarty 3, вам, вероятно, даже не нужно использовать литерал, если каждая открывающая скобка («{») в javascript-коде имеет пробел после нее. – Borgtex

+0

Этот код не будет работать для объектов. – nikksan