@zekin

Как поженить php и js?

Помогите пожалуйста есть php код с помощью которого получаю элементы

<?
if (CModule::IncludeModule("iblock")):
 
    $iblock_id = 53;
    # show url my elements
    $my_elements = CIBlockElement::GetList (
      Array("ID" => "ASC"),
      Array("IBLOCK_ID" => $iblock_id),
      false,
      false,
      Array('ID', 'NAME',  'PROPERTY_TAGS', 'DETAIL_PAGE_URL')
    );
 
    while($ar_fields = $my_elements->GetNext())
    {
      echo $ar_fields['NAME'])." ;<br>";
    }
endif;
?>


Есть js

const items = [
  {
    id: 1,
    name: 'провод',
    url: 'provod',
    tags: ['провода', 'проводов']
  },
  {
    id: 2,
    name: 'робот',
    url: 'robot',
    tags: ['роботы', 'роботов']
  },
]


Стоит задача из php массива передать данные в JS заполнить const items по примеру как сейчас, не как не могу понять как это сделать, на сколько смог нагуглил что нужно обернуть массив php в json и передать уже в js но не как не получается это сделать.

Прошу не бить палками, прошу помогите составить код
  • Вопрос задан
  • 276 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
если JS в теле страницы, которую формирует PHP, то просто вставляйте в вывод:
index.php
<?php
$result = [];
while ($ar_fields = $my_elements->GetNext()) {
      $result[] = $ar_fields;
};
?>

const items = <?php echo json_encode($result); ?>;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@loonny
Отправить GET/POST запрос по адресу скрипта из JS, предварительно конвертировав на сервере ответ в JSON например. Далее const items = JSON.parse(response) и готово.
Ответ написан
Комментировать
<?
if (CModule::IncludeModule("iblock")):
 
    $iblock_id = 53;
    # show url my elements
    $my_elements = CIBlockElement::GetList (
      Array("ID" => "ASC"),
      Array("IBLOCK_ID" => $iblock_id),
      false,
      false,
      Array('ID', 'NAME',  'PROPERTY_TAGS', 'DETAIL_PAGE_URL')
    );
 
    while($ar_fields = $my_elements->GetNext())
    {
      echo $ar_fields['NAME'])." ;<br>";
    }
endif;
?>
<script>
	var $my_elements = <?=json_encode($my_elements);?>
</script>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы