Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.12.2018, 16:07
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Подгрузить список данных через AJAX в fancybox
Всем привет!
На офиц. сайте fancybox есть пример отображения фото при клике на ссылку:

<p>
  <a id="test" href="javascript:;" class="btn btn-primary">Click me</a>
</p>


$("#test").on('click', function() {

  $.fancybox.open([
    {
      src  : 'https://source.unsplash.com/IvfoDk30JnI/1500x1000',
      opts : {
        caption : 'First caption',
        thumb   : 'https://source.unsplash.com/IvfoDk30JnI/240x160'
      }
    },
    {
      src  : 'https://source.unsplash.com/0JYgd2QuMfw/1500x1000',
      opts : {
        caption : 'Second caption',
        thumb   : 'https://source.unsplash.com/0JYgd2QuMfw/240x160'
      }
    }
  ], {
    loop : true,
    thumbs : {
      autoStart : true
    }
  });

});


Вопрос: как можно внутрь JS вставить данные, полученные функцией AJAX, интересуют эти строки:

src  : 'https://source.unsplash.com/IvfoDk30JnI/1500x1000',
      opts : {
        caption : 'First caption',
        thumb   : 'https://source.unsplash.com/IvfoDk30JnI/240x160'
      }


Т.е. я отправляю запрос скрипту, который формирует список и либо строкой, можно массивом получить это, потом в цикле перебрать, что-то типа:

$.fancybox.open([
тут перебор массива, который формирует данные
], {
    loop : true,
    thumbs : {
      autoStart : true
    }
  });


Получаю нужный массив, не могу реализовать его перебор правильно. Цикл FOR внутрь [] не получается вставить... Что-то запутался, как это сделать?

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

Буду благодарен за советы!
Ответить с цитированием
  #2 (permalink)  
Старый 01.12.2018, 16:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Lion_astana
тут перебор массива, который формирует данные
тут массив который был ранее сформирован.
Сообщение от Lion_astana
Получаю нужный массив,
тут и надо рыть.
Ответить с цитированием
  #3 (permalink)  
Старый 01.12.2018, 16:38
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Не получается...

Если вставляю данные как html, то и получаю во всплывающем окне просто текст.

А как массив перебрать в этой конструкции правильно не пойму. Пробовал оставлять [], а внутри цикл FOR - не работает. Пробовал без [] - не работает. Пробовал всю конструкцию формировать в PHP и вставлять строкой - выходит строка.

Чёт голова не варит, не пойму, как подступиться.
Ответить с цитированием
  #4 (permalink)  
Старый 01.12.2018, 16:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Lion_astana,
информации недостаточно
Ответить с цитированием
  #5 (permalink)  
Старый 01.12.2018, 16:59
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Делаю запрос AJAX, тип данных json. Получаю ответ. Например переменная data. В ней массив из строк: https://source.unsplash.com/IvfoDk30JnI/1500x1000, https://source.unsplash.com/0JYgd2QuMfw/1500x1000 и т.д.

В исходном примере опустим пока в JS:
opts : {
        caption : 'First caption',
        thumb   : 'https://source.unsplash.com/IvfoDk30JnI/240x160'
      }

Оставляем только src, так проще.

Должно получиться так:

$.fancybox.open([
    {
      src  : 'https://source.unsplash.com/IvfoDk30JnI/1500x1000'
    },
    {
      src  : 'https://source.unsplash.com/0JYgd2QuMfw/1500x1000'
    }
  ], {
    loop : true,
    thumbs : {
      autoStart : true
    }
  });


Теперь вместо этих строк, прописанных изначально:
{
      src  : 'https://source.unsplash.com/IvfoDk30JnI/1500x1000'
    },
    {
      src  : 'https://source.unsplash.com/0JYgd2QuMfw/1500x1000'
    }


Нужно перебрать мой массив data, полученный ранее.
Ответить с цитированием
  #6 (permalink)  
Старый 01.12.2018, 17:13
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Если делаю просто [data], то во всплывающем окне выходит [src : https://source.unsplash.com/IvfoDk30JnI/1500x1000,src : https://source.unsplash.com/0JYgd2QuMfw/1500x1000]

Если делаю без квадратных скобок, то во всплывающем окне выходит первый слайд, но вместо фото - строка в центре экрана: https://source.unsplash.com/IvfoDk30JnI/1500x1000, листаю далее - следующий слайд, но по центру адрес второго фото: https://source.unsplash.com/0JYgd2QuMfw/1500x1000

Т.е. все как надо, только вместо фото - их адрес.
Ответить с цитированием
  #7 (permalink)  
Старый 01.12.2018, 17:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Lion_astana,
$(function() {
  var opt = {success:function(data) {
    data = data.map(function(src) {
      return {src:src};
    });
    $("#test").on("click", function() {
      $.fancybox.open(data, {loop:true, thumbs:{autoStart:true}});
    });
  }};
  AJAX(opt);
});
Ответить с цитированием
  #8 (permalink)  
Старый 01.12.2018, 17:30
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Спасибо, то что нужно!!!!
РАБОТАЕТ!!!!!!!!!!!
Ответить с цитированием
  #9 (permalink)  
Старый 01.12.2018, 17:38
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Супер, а как можно передать теперь и другие поля и как их правильно вытащить?

{
      src  : 'https://source.unsplash.com/IvfoDk30JnI/1500x1000',
      opts : {
        caption : 'First caption'
      }
}


Нужен массив из массивов, в которых две ячейки: первая - https://source.unsplash.com/IvfoDk30JnI/1500x1000, вторая ячейка - First caption.

Получается, если мысли верные, массив приходит такой:

data[0][[0]='https://source.unsplash.com/IvfoDk30JnI/1500x1000',[1]='First caption']
data[1][[0]='https://source.unsplash.com/0JYgd2QuMfw/1500x1000',[1]='Second caption']

Как их теперь принять и спарсить в такой вид как в коде выше?
Ответить с цитированием
  #10 (permalink)  
Старый 01.12.2018, 17:57
Аспирант
Отправить личное сообщение для Lion_astana Посмотреть профиль Найти все сообщения от Lion_astana
 
Регистрация: 19.11.2010
Сообщений: 48

Все, разобрался, получилось!
Спасибо за все!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При передаче кода fancybox в div через .load из div другого файла не всплывает модаль alanat Ваши сайты и скрипты 1 02.07.2016 00:31
Безопасный доступ к базе данных через ajax Devil198711 AJAX и COMET 3 16.06.2016 13:24
Обработка AJAX - данных (UserScript) fesskerl Events/DOM/Window 1 15.11.2013 23:40
отправка данных в инпут через AJAX 2 imediasun1 Элементы интерфейса 1 30.01.2013 18:13
Просмотр передаваемых данных через AJAX Гость AJAX и COMET 3 04.08.2008 14:34