just_guy95
@just_guy95
Bitrix 1C

Как перенести данные из файла php в файл js?

Добрый вечер.
Есть template.php с содержимым:
<?
$ourParams =  array(
	'PATH_TO_TEMPLATE' => '/bitrix/component/catalog.element/test/',
	'WORDS' => 'Раз, два',
	'ARRAY' => array ('Test1' => 1, 'Test2' => 2),
)
?>

$(document).ready(function(){ 
		var objJq = new ourJs(<?= json_encode($ourParams) ?>);
	});

Поясняю, создаю массив с данными → с помощью json_encode перевожу его в json представление, чтобы в дальнейшем с этим массивом можно было работать в js → создаю объект «ourJs» и помещаю в него данный массив.

script.js с содержимым:
ourJs = function (params) {
var test = params.PATH_TO_TEMPLATE;
console.log(test);
};

Далее получаю данные массива в script.js, и тут момент, console.log(test) в теле функции выдает значение PATH_TO_TEMPLATE = /bitrix/component/catalog.element/test/, console.log(test) вне тела функции выдает PATH_TO_TEMPLATE = undefiend.

Вопросы:
1. Как получить значения вне тела функции? В Jq слаб, обучение в процессе, застрял на этом вопросе.
2. Если способ описанный выше кажется вам с какой-нибудь точки зрения не правильным, буду рад другим
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
Наверное! Можно оперироваться скрытыми полями html
Ответ написан
@hello_my_name_is_dany
Backend Developer (Node.js, PHP, C#)
То, как вы хотите:
Object.assign(window, <?=json_encode($ourParams) ?>);

Но лучше такое, конечно, выносить в отдельные объекты:
var config = <?=json_encode($ourParams); ?>;
Ответ написан
@alezzz
выведите внутри тега<head> ваш массив, до того как подключается файл script.js
<script>window.objJq = {"PATH_TO_TEMPLATE":"/bitrix/component/catalog.element/test/","WORDS":Раз, два","ARRAY":{"Test1":1,"Test2":3}</script>

И в файле script.js обращайтесь к элементам массива
let testOne = window.objJq.ARRAY.Test1;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Витебск
от 2 800 до 3 300 $