fancybox的另一种用法----的fancybox通过AJAX获得的href的图像

的fancybox通过AJAX获得的href的图像

jquery ajax fancybox
这里是我的问题。 的fancybox用于显示图像,通过AJAX其中获得。 当页面加载时存在不存在的页面上的图像,仅与gallery的属性链接。 所以,当我点击这个处理这些代码的链接之一:
 $(".fancybox-manual-c").live('click',function() {
   $.ajax({
     type : 'POST',
     data : {'gal' : $(this).attr('rel')},
     url : ' CodeGo.net 
     //dataType: 'json',
     complete: function(data) {
       var dataX = data.responseText;
       console.log(data.responseText);
//fancybox的另一种用法       var img = [
         {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30711.jpg'},
         {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-27082.jpg'},
         {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30988.jpg'},
         {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30858.jpg'},
         {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-23424.jpg'},];
       var opts = {
         prevEffect : 'none',
         nextEffect : 'none',
         helpers : {
           thumbs : {
             width: 75,
             height: 50
           }
         }
       };
       $.fancybox(img, opts);
      }
   });
 });
这个解决方案工作得很好。但是,当
 var img = [dataX];
而不是
   var img = [
    {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30711.jpg'},
    {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-27082.jpg'},
    {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30988.jpg'},
    {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-30858.jpg'},
    {href:'/gallery/galleries/gallery1/wallpapers_by_ellin-23424.jpg'},];
我得到弹出式窗口的反响文本。 演示 我在做什么错了? 的fancybox-jQuery插件 版本:2.0.5(21/02/2012) jQuery的1.7-最新 的'代码
function directoryToArray($directory, $recursive = true) {
 $array_items = array();
 if ($handle = opendir($directory)) {
  while (false !== ($file = readdir($handle))) {
   if ($file != "." && $file != "..") {
    if (is_dir($directory. "/" . $file)) {
     if($recursive) {
      $array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
     }
     $directory = str_replace('./galleries/', '', $directory);
     $file = $directory . "/" . $file;
     $array_items[]= preg_replace("/\/\//si", "/", $file);
    } else {
     $directory = str_replace('./galleries/', '', $directory);
     $file = $directory . "/" . $file;
     $array_items[] = preg_replace("/\/\//si", "/", $file);
    }
   }
  }
  closedir($handle);
 }
 return $array_items;
}
header("Content-type: text/plain;charset=utf-8");
$arrays = directoryToArray( "./galleries/".$_POST['gal']);
foreach($arrays as $array){
 echo "{href:'/gallery/galleries/$array'}, \n";
}
更新
  $(".fancybox-manual-ajax").live('click',function() {
   $.ajax({
    type : 'POST',
    data : {'gal' : $(this).attr('rel')},
    url : ' CodeGo.net 
    dataType: 'text',
    complete: function(data) {
     var dataX = data.responseText;
     var dataXsplit = dataX.split(',');
     var dataXarrayObj = new Array(), i;
     for(i in dataXsplit){
      if(dataXsplit[i].length){ //remove last empty element after .split()
       dataXarrayObj[i] = $.parseJSON(dataXsplit[i]);
      }
     }
     var opts = {
      prevEffect : 'none',
      nextEffect : 'none',
      helpers : {
       thumbs : {
        width: 75,
        height: 50
       }
      }
     };
     $.fancybox(dataXarrayObj, opts);
    }
   });
  });

本文地址 :CodeGo.net/434539/ 
------------------------------------------------------------------------------------------------------------------------- 
1.  好了,你没有做错什么,但有很多factor在这种情况下要考虑 首先,从你的ajax调用,您可以获得:
var dataX = data.responseText;
responseText 属性获取响应数据作为一个字符串,所以的fancybox显示器如字符串,而不是图像数组。 你必须做一个解决方法是这样的字符串转换成一个JavaScript对象 CodeGo.net,这样的fancybox可以解析它。有不同的方法来做到这一点。其中 eval() 函数,但可以有安全的问题,以便不 既然你jQuery的,做你最安全的方法是jQuery.parseJSON(JSON),但是你必须确保你将被转换成一个良好的JSON字符串。 你的情况,你的“文件似乎呈现这种格式
{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:
var img = dataXarrayObj;
$.fancybox(img, opts);
或者干脆
$.fancybox(dataXarrayObj, opts);
请注意,你不需要附上数组中 [] 括号

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值