我之前遇到过glob函数的问题,甚至经过手册阅读之后,我似乎仍然偶然发现了基本问题。
过去我在返回图片方面遇到了问题,因为我使用的目录是绝对的,而不是相对的。我也遇到了从foreach返回图像的问题,因为我正在循环但没有在主字符串中添加字符串,所以只获取最后一张图像等。
在经历过这些以前的问题之后,我以为我已经克服了这些问题并且知道什么会起作用。我试图使用的代码最终将在通过AJAX加载的页面上的函数内。在加载的页面上调用该函数。
但是,我甚至无法在静态页面上使用它!
我使用的代码是:
<?php
$dir = '/portfolio/_images/design/curiousc/gallery/';
$files = glob(dirname(__FILE__).$dir.'*.{jpg,png,gif,jpeg}', GLOB_BRACE);
foreach ($files as $file){
$output = '<img class="project inner-module" src="'.$dir.basename($file).'" alt="'.$file.'" />';
$images .= $output;
};
var_dump($files); //Returns this: array(0) { }
//I know the $dir is correct as it loads the following code.
//For sake of reference, I have manually added the filename.
//$images .= '<img class="project inner-module" src="'.$dir.'1-portrait-900.png" alt="'.$file.'" />';
//I would eventually have this feature inside a function so would preferably have 'return' rather than 'echo'
echo $images;
?>
我已尝试将$dir
手动代码作为单行使用,因此我知道该目录已正确列出。我还做了var_dump($files);
,在页面中返回“array(0){}”。如果我错了,请纠正我,但这是否意味着它找不到任何文件?
任何帮助将不胜感激!代码最终将列出与我的投资组合中的特定项目相关的所有图像。
谢谢!
[编辑]
添加文件结构和AJAX脚本以获得@ Darhazer的帮助。
文件结构:
/ _ inc / js / ajaxtrigger.js *这是AJAX脚本所在的位置和工作原理。
/index.php 这是我正在测试glob函数的静态页面。
/portfolio/index.php 使用AJAX将其加载到index.php中
/portfolio/project.php 这会加载到portfolio / index.php中,随后在/index.php中
/ portfolio / _images / category / * project * / gallery / 每个项目的图像目录
我知道project.php在/ portfolio /中,但无论是否将src设置为/ portfolio / _images / ...或只是_images /...
,我都无法获得图片引用。我用于AJAX加载的脚本是:
$(document).ready(function(){
bindNewClick();
function bindNewClick(){
$('a.ajaxtrigger').on('click', function(){
// The target for AJAX loading is set with data-target="target-name-here" applied to the <a>
// The target div needs to have an id that matches #target-target-name-here
var target = $('div#target-'+$(this).data('target'));
doAjax($(this).attr('href'), target);
return false;
});
}
function doAjax(url, container){
if(url.match('^http')){
var errormsg = 'Ah! AJAX can\'t load external content';
container.html(errormsg);
}
else {
$.ajax({
url: url,
timeout:5000,
success: function(data){
container.html(data);
bindNewClick();
},
error: function(req,error){
if(error === 'error'){
error = req.statusText;
};
var errormsg = 'Uh oh! There was an error: '+error;
container.html(errormsg);
},
beforeSend: function(data){
container.html('<p>Loading...</p>');
}
});
};
};
});
答案 0 :(得分:1)
您正在从系统的/ root开始提供绝对路径
你想要做的可能是扫描一个子文件夹,例如相对路径
将$ dir更改为dirname(__FILE__) . '/portfolio/_images/design/curiousc/gallery/'
(假设投资组合是脚本所在的子文件夹)