Извлечение данных из массива, созданного в php, и передача их в ветку javascript

Я пытаюсь получить массив, созданный в моем php-контроллере, для передачи данных в javascript в файле .twig.

Я могу получить доступ ко всем значениям в цикле for в .twig, но при попытке получить значение в javascript я могу получить весь массив только с помощью:

var markers = {{ products|json_encode|raw }};

Это производит:

var markers = [{"id":"1","name":"x","location":"San Diego"},{"id":"2","name":"y","location":"LA"}];

При попытке получить доступ к определенным значениям с помощью цикла for в javascript:

for (i = 0; i < markers.length; i++) 
{ 
alert(markers[i][0])
} 

Используя console.info/alert, я получаю [undefined] для маркеров [i] [0] и [объект объекта], если я перебираю маркеры [i]. Длина правильная.

Это мой первый проект с использованием .twig, поэтому я не знаю, пропускаю ли я что-то действительно очевидное, потому что не могу найти свою проблему.

Любая помощь будет оценена по достоинству!

В twig используйте атрибут данных для элемента, используйте фильтр, чтобы избежать любых одинарных кавычек, а затем используйте JSON.parse в Javascript для получения данных. Здесь есть хороший обучающий пост: cruflesscraft.com/…

NeilWkz 29.07.2019 18:04

Все еще не могу вытащить какие-либо данные из массива, получая только "", разве нельзя взять значения из var markers = {{ products|json_encode|raw }};?. Из приведенного примера console.info($entryInfoObjects); показывает мне массив в консоли 0: {место: "SD", имя: "x"} 1: {место: "LA", имя: "y"}, но приведенный пример var entryInfo = { location: '{{ product.location }}',}; для извлечения конкретных данных дает мне " "...

Beth 29.07.2019 19:22
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, ваша проблема заключается в цикле javascript for.

Смотри сюда:

var markers = [{"id":"1","name":"x","location":"San Diego"},{"id":"2","name":"y","location":"LA"}];

Ни один из объектов в вашем массиве не имеет свойства с именем 0. У вас есть только свойства с именами id, name и location.

Измените свой цикл на что-то вроде:

for (i = 0; i < markers.length; i++) 
{ 
  alert(markers[i]['name'])
} 

Вы должны увидеть, что он показывает вам значение свойства каждого объекта name.

Другие вопросы по теме