Ну, вы не делаете ничего плохого, но в этом сценарии нужно учесть множество факторов
Во-первых, с вашего Ajax-звонка вы получаете:
var dataX = data.responseText;
и свойство responseText
получает данные ответа в виде строки , поэтому fancybox отображает такую строку вместо массива изображений.
В качестве обходного пути вы должны преобразовать такую строку в javascript объект , чтобы fancybox мог его проанализировать. Есть разные способы сделать это. Один использует функцию eval()
, но могут быть проблемы с безопасностью, поэтому этот метод не рекомендуется.
Поскольку вы используете jQuery, самый безопасный способ сделать это - использовать jQuery.parseJSON (json) , однако вы должны быть уверены, что будете преобразовывать правильно сформированную строку JSON.
В вашем случае ваш файл "getfile.php", похоже, отображает этот формат
{href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30711.jpg'},....
но правильно сформированная строка JSON должна выглядеть следующим образом:
{"href":"/gallery/galleries/gallery1/wallpapers_by_ellin-30711.jpg"},...
обратите внимание на обязательные двойные кавычки .
Если вы уверены, что data.responseText
возвращает строку , например:
data.responseText='{"href":"/gallery/galleries/gallery1/wallpapers_by_ellin-30711.jpg"},{"href":"/gallery/galleries/gallery1/wallpapers_by_ellin-27082.jpg"}, etc ....'
var dataX = data.responseText;
тогда можно 1). разбить строку , 2). преобразовать каждый отдельный элемент в javascript объект и 3). поместите его в массив объектов вроде:
var dataXsplit = dataX.split(',');
var dataXarrayObj = new Array(), i;
for(i in dataXsplit){
dataXarrayObj[i] = jQuery.parseJSON(dataXsplit[i]);
}
после этого вы можете запустить fancybox с правильным массивом объектов (проверьте методы API в fancybox документации ), выполнив:
var img = dataXarrayObj;
$.fancybox(img, opts);
или просто
$.fancybox(dataXarrayObj, opts);
Обратите внимание, что вам не нужно заключать массив в []
скобки