好吧,您没有做错任何事情,但是在这种情况下有很多因素要考虑
首先,通过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
(检查fancybox文档中的API方法):
var img = dataXarrayObj;$.fancybox(img, opts);
或简单地
$.fancybox(dataXarrayObj, opts);
请注意,您不需要将 数组 括在
[]方括号中



