Как выполнить конкатенацию строк с Javascript в представлении Laravel?

У меня есть переменные data.data[key].thumb и data.data[key].image, и это внутри тега <script> в шаблоне Laravel Blade.

В этой строке есть ошибка, вызывающая следующее:

Use of undefined constant uploads - assumed 'uploads'

Код такой:

user_status += '<img src = "{{asset(uploads/' + data[key].image + '.' + 
                data[key].thumb + ')}}" class = "img-responsive" 
                style = "height:290px;" alt = "360-video-feature" /></div>';

user_status += '<img class = "OverlayIcon" src = " 
                {{asset('uploads/video_icon_overlay.png')}}" alt = "" />';

Мне кажется, что у вас user_status должен быть таким: user_status += '<img class = "OverlayIcon" src = " {{asset(\'uploads/video_icon_overlay.png\')}}" alt = "" />'; Как и сейчас, я не уверен, действительно ли простые кавычки в середине понимаются как часть строки, а не просто как маркеры остановки и начала.

xoxel 15.05.2018 10:29

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

pravin poudel 15.05.2018 10:33

Тогда я не знаю, просто мне показалось, что это было странно

xoxel 15.05.2018 10:34

может быть, вам не хватает одинарной цитаты перед загрузкой? Должен быть 'uploads/' + data[key].image

Ralph519 15.05.2018 11:22

Цитаты - это всего лишь часть проблемы. Кажется, вы смешиваете переменные JS и PHP, и это невозможно сделать так, как вы делаете. Это: {{ asset(uploads/' + data[key].image + '.' + data[key].thumb + ') }} не будет работать, даже если вы исправите кавычки. Это потому, что переменная data доступна только после того, как ваш шаблон Blade скомпилирован и отображается в браузере.

Gustavo Straube 17.05.2018 22:58
Поведение ключевого слова "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) для оценки ваших знаний,...
1
5
782
1

Ответы 1

Вы не можете так смешивать PHP и JavaScript. Код PHP выполняется на сервере при рендеринге представления, а код JavaScript - на стороне клиента. Даже если бы это было возможно, ваш синтаксис все равно был бы неправильным.

user_status += '<img src = "{{asset(uploads/' + data[key].image вам не хватает цитаты перед uploads/. Это должен быть "uploads.

Что вы можете сделать:

user_status += '<img src = "' +
               '{{asset("uploads/")}}' + data[key].image + '.' + data[key].thumb + '"' +
               ' class = "img-responsive" style = "height:290px;" alt = "360-video-feature" /></div>';

Таким образом, '{{asset("uploads/")}}' будет заменен строкой URL-адреса для папки загрузок, а остальная часть URL-адреса будет добавлена ​​через JavaScript. Вот как браузер это увидит:

user_status += '<img src = "' +
               'http://www.example.com/uploads/' + data[key].image + '.' + data[key].thumb + '"' +
               ' class = "img-responsive" style = "height:290px;" alt = "360-video-feature" /></div>';

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