Я использовал JFK's метод для заполнения Fancybox 2.1.5 через Ajax вместо элементов, как показано здесь FancyBox get href for images via AJAX Это работает довольно хорошо, но проблема в том, что нет возможности ограничить количество записей называется. Если в галерее 4000 изображений, Fancybox займет много времени. Итак, я ограничил свой SQL
запрос до 16 records
. Затем я использую условие и функцию, чтобы сказать fancybox получить следующие 16 записей, когда он попадает в последний из текущей группы. Проблема в том, что она не добавит новые изображения в группу. Я использую метод также JFK's ответ здесь Load next Images via Ajax and add to Fancybox, чтобы добавить в группу Fancybox, используя $fancybox.group.push
, который не работает для меня.Fancybox - Добавить изображения в галерею через ajax
Во-первых, вот код jQuery для получения дополнительных изображений через json
. переменная pid
является идентификатором фотографии, с которой начнет работать база данных при получении следующих 16 записей. a_id
- это альбом. Эта функция называется внутри функции afterLoad
fancybox, где находится остальная часть моего кода. Слишком долго было публиковать все это. Толчок функция вызывается, когда обычай следующий щелчке стрелки с помощью onclick();
function push(pid, a_id){
var act = "thtr";
var module = "photos";
var push = 1;
$.ajax({
type: "POST",
url: "/ajax.php",
data: {"a_id": a_id, "act": act, "pid": pid, "push": push, "module": module},
success: function(response){
var arrayObj = $.parseJSON(response);
$.fancybox.group.push(arrayObj);
alert($.fancybox.group.length);
$.fancybox.next();
}
});
}
$fancy.group.push
не работает. Ответ ajax, который я получаю, совпадает с исходным ответом ajax, когда fancybox сначала открывается, за исключением 16 новых записей. Ответ json
отформатирован, как показано ниже. Кстати, в ответе json
есть несколько дополнительных элементов, которые я использую для других вещей, которые игнорируются в противном случае, так что это не проблема. Группа изначально имеет 16 записей, но после запуска функции push
она оповещает об 17
, но ничего не изменилось. Он должен предупредить о возврате 32
, если он вытащил еще 16
или сколько-нибудь сервер отвечает. Не уверен, почему он не работает. Невозможно найти что-либо еще при добавлении в группу.
[{"href":"https:\/\/cdn1.mysite.com\/photos\/c5\/c7\/45\/c5c745a424b9a2f.jpeg","type":"image","pid":"77695","owner":"12219","purl":"https:\/\/mysite.com\/photo?per=12219&set=77695.15735&s=0","aurl":"\/view-photo_album-1jpIbSZgIsV.html","isDom":false},...etc]
ОБНОВЛЕНИЕ
Группа обновляется с помощью $.fancybox.group.push
, как предупреждение показывает 32 объектов в этом сейчас. Но по какой-то причине fancybox не обновляется, потому что вместо следующего перехода к новому изображению ударяет следующий цикл.
UPDATE2
Толчок работает, если я вручную выписывать строку ответа в функцию как в этом примере:
$.fancybox.group.push(
{ href: "images/04.jpg", type: "image", title: "Picture 04", isDom: false },
{ href: "images/05.jpg", type: "image", title: "Picture 05", isDom: false }
);
Не знаю, почему он не будет работать с переменной, как это. Это тоже произошло из ответа.
$.fancybox.group.push(arrayObj);
Вы должны просто изменить АЯКС DATATYPE как это ** DATATYPE: "JSON" ** –