【问题标题】:Getting images from folder with for jQuery slideshow使用 jQuery 幻灯片从文件夹中获取图像
【发布时间】:2011-12-23 08:02:38
【问题描述】:

我的 Jquery 幻灯片脚本看起来像这样

  $(function() {
    $('#bg').crossSlide({
      sleep: 3,
      shuffle: true,
      fade: 1
    }, [
  { src: 'core/design/images/bgs/1.jpg'},
  { src: 'core/design/images/bgs/2.jpg'},
  { src: 'core/design/images/bgs/3.jpg'},
  { src: 'core/design/images/bgs/4.jpg'}
    ])
  });

如您所见,我一一声明了图像的路径。有什么方法可以扫描文件夹中的图像并一次添加所有内容。也许,它可以用 PHP 完成?

【问题讨论】:

  • 如果你认为我的答案是正确的,你可以标记它。
  • 这是“一半”的答案。我仍然无法让它工作。
  • 现在有什么问题,也许我可以帮忙?

标签: php javascript jquery slideshow photo


【解决方案1】:

是的。 可以使用 JS / jQuery 来完成:

在本地和实时服务器上都可以正常工作,并且允许您扩展允许的文件扩展名的分隔列表:

var folder = "core/design/images/bgs/";

$.ajax({
    url : folder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            if( val.match(/\.jpg|\.png|\.gif/) ) { 
                $("body").append( "<img src='"+ folder + val +"'>" );
            } 
        });
    }
});

在你的情况下,你想构造一个对象数组{src:"path"},所以它可能看起来像:

var folder = "core/design/images/bgs/";

$.ajax({
    url : folder,
    success: function (data) {
        var srcArr = [];
        $(data).find("a").attr("href", function (i, val) {
            if( val.match(/\.jpg|\.png|\.gif/) ) { 
                var ob = {src : folder+val};
                srcArr.push( ob );
            } 
        });
        // Now that the Array is filled with Objects send to callback
        readFolderCallback( srcArr );
    }
});


function readFolderCallback( srcArr ) {
    $('#bg').crossSlide({
      sleep: 3,
      shuffle: true,
      fade: 1
    }, arrSrc);
}

https://stackoverflow.com/a/32940532/383904

【讨论】:

  • 如果服务器关闭了目录索引(每台生产服务器都值得一试),则不会。 JS无法盲目知道目录中的文件列表。
【解决方案2】:

这不能用 Javascript 来完成。但是使用嵌入式服务器端代码应该是可能的(如 PHP)。这是php中的一个例子。

存在一个名为glob 的函数,它可能适合您的目的。这是一个如何使用它的示例。

$path = <absolute path for the folder where images are located>
$images = glob($path.'/*.jpg') // this returns an array of file names only doesnt contain the path

现在你有了 php.ini 中的数组列表。您必须开始在 javascript 中使用它

$(function() {
$('#bg').crossSlide({
  sleep: 3,
  shuffle: true,
  fade: 1
}, [
<?php foreach($images as $filename){ ?>
    { src: 'core/design/images/bgs/<?php echo $filename.jpg ?>'},
<? } ?>

    ])
  });

【讨论】:

  • 我的 html 标记和 js 文件是分开的。所以我不能将 pho 代码放入 js 中。必须有另一种解决方案,它通过 ajax 从 php 获取所有路径。用标记搞乱逻辑并不是一个好习惯
  • 你可以发送一个ajax请求来获取imagePath的JSON。获得 JSON 后,您可以评估并获得实际的文件路径,您可以将其插入到您的 js 中。
猜你喜欢
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多