在通读手册之前甚至在多次阅读手册之后,我都遇到了 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) { }”的操作。如果我错了,请纠正我,但这是否意味着它找不到任何文件?
任何帮助,将不胜感激!该代码最终将列出与我的投资组合中特定项目相关的所有图像。
谢谢!
[编辑]
为了@Darhazer 的帮助,添加文件结构和 AJAX 脚本。
文件结构:
/_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>');
}
});
};
};
});