Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.09.2019, 11:50
Аспирант
Отправить личное сообщение для LingVist Посмотреть профиль Найти все сообщения от LingVist
 
Регистрация: 21.09.2010
Сообщений: 39

Да, изображения будут другие, получаемые из БД, шаблон для примера

Собака - это не для проверки, это особенности ларавелевского шаблонизатора blade, она используется для отображения циклов - @for, @foreach, проверок @if b т.д.

Я так думаю, что вместо этого цикла на сервере
@foreach($product->image as $item)
    <li class="">
     <img src="{{ asset('img') }}/catalog/{{ $product->category_alias }}/{{ $item->img }}" alt="">
</li>
@endforeach

нужно сделать цикл в скрипте, а потом уже подставить в UL
Вопрос - возможно такое?
Ответить с цитированием
  #12 (permalink)  
Старый 20.09.2019, 12:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Ну если шаблонизатор, тогда ...

То есть нужно точно такой же html код получить как и в шаблоне? Если да, то response.title уже не получиться, ибо response это массив, значит response[0].title. А изображения это response[1]. Обходите циклом его и создавайте элементы li c изображениями, данные для которых берите из этого массива:

$.each(response[1], function() {
    //тут элементы этого массива, например имя изображения (насчет путей к ним не известно)
    this.img
})


Как создавать и добавлять элементы в JQ думаю не надо рассказывать.
Ответить с цитированием
  #13 (permalink)  
Старый 20.09.2019, 16:19
Аспирант
Отправить личное сообщение для LingVist Посмотреть профиль Найти все сообщения от LingVist
 
Регистрация: 21.09.2010
Сообщений: 39

Огромное спасибо, все работает. Добавляю картинки так:
$(".product-preview").append("<li><img src='{{ asset('img') }}/catalog/"+response[0].category_alias+"/"+this.img+"'></li>");

Только небольшой косяк - после закрытия модального окна продукта, если открыть следующее окно, то старые картинки остаются, а к ним добавляются новые. Подозреваю, что дело в методе append(). Может какой другой использовать или сделать прерывание функции после открытия окна? Я пробовал добавить return false, не помогло
Ответить с цитированием
  #14 (permalink)  
Старый 20.09.2019, 16:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Можно очищать перед запросом родителя - $(".product-preview").empty(), можно не .append(), а готовить html и вставлять его, старый при этом будет перезаписан. Но, если "открыть следующее окно" означает повторное открытие с теми же данными (ранее полученными), то выгоднее перед запросом проверять - если родитель $(".product-preview") пустой, то делаем запрос и заполняем его данными, и показываем, иначе только показываем.

PS. А откуда на клиенте может взяться {{ asset('img') }}? Это ведь переменная серверная, которая передается в шаблонизатор.

Последний раз редактировалось laimas, 20.09.2019 в 16:59.
Ответить с цитированием
  #15 (permalink)  
Старый 20.09.2019, 17:08
Аспирант
Отправить личное сообщение для LingVist Посмотреть профиль Найти все сообщения от LingVist
 
Регистрация: 21.09.2010
Сообщений: 39

$(".product-preview").empty() работает прекрасно
Спасибо Вам за помощь, удачи Вам и здоровья!!
Ответить с цитированием
  #16 (permalink)  
Старый 20.09.2019, 17:11
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А {{ asset('img') }}?
Ответить с цитированием
  #17 (permalink)  
Старый 20.09.2019, 17:25
Аспирант
Отправить личное сообщение для LingVist Посмотреть профиль Найти все сообщения от LingVist
 
Регистрация: 21.09.2010
Сообщений: 39

Забыл )
Это адрес сайта и папка img. В принципе, можно было написать просто /img, но как-то привык уже
Ответить с цитированием
  #18 (permalink)  
Старый 20.09.2019, 17:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от LingVist
Это адрес сайта и папка img.
Ну это понятно по месту в строке src, не понятно откуда на клиенте эта переменная? В посте 9 эта переменная в коде шаблонизатора, что понятно, а в посте 13 всплывает в клиентском коде, она что передается на клиента? И как она будет подставлена?
Ответить с цитированием
  #19 (permalink)  
Старый 20.09.2019, 18:39
Аспирант
Отправить личное сообщение для LingVist Посмотреть профиль Найти все сообщения от LingVist
 
Регистрация: 21.09.2010
Сообщений: 39

Подставится так
$(".product-preview").append("<li><img src='{{ asset('img') }}/catalog/"+response[0].category_alias+"/"+this.img+"'></li>");
Ответить с цитированием
  #20 (permalink)  
Старый 20.09.2019, 18:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

И кто же это сделает?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести данные JSON в аттрибут data-* wintersoft Общие вопросы Javascript 7 09.08.2018 10:15
как получить данные с другого сайта? dobush jQuery 2 19.01.2013 17:39
Как убрать боковой скрол в модальном окне? pahannew Элементы интерфейса 6 08.01.2013 13:13
Как получить данные переданные методом POST? layla Общие вопросы Javascript 3 13.12.2010 10:16
как получить данные из reader.xmlData lfs2008 ExtJS 3 02.11.2010 19:12