2

ディレクトリを反復処理して、内部のすべての写真を表示しようとしています。式に Jquery/ajax を追加するまで動作するようになりました.どういうわけか途中でパスが重複しているため、このエラーが発生します(重複している場所を確認できます):

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'DirectoryIterator::__construct(images/gallery/album1,images/gallery/album1) [<a href='directoryiterator.--construct'>directoryiterator.--construct</a>]: The system cannot find the path specified

私は一生、なぜそれがそのように出てくるのか理解できません...contruct(images/gallery/album1,images/gallery/album1) そうあるべきです construct(images/gallery/album1)

PHP:

$album = $_POST['album'];
$dir = new DirectoryIterator("images/gallery/$album");
foreach ($dir as $fileInfo)
{
    if($fileInfo->isDot()) continue;
    $pic = $fileInfo->getFilename();
    print "<div>
            <img src='images/gallery/$album/$pic'>
            </div>";
}

Jquery/ajax:

function albumChosen(id)
{
var id = id;
var album = $('a[id="'+id+'"]').attr("rel");
$.ajax({
    url: "PHPscripts/getAlbums.php",
    type: "POST",
    data: {'album' : album},
    success: function(data){
        $('#galleryList').html(data);
    }
});
return false;

}

I の場合alert(album);、「album1」が正しく表示されます。したがって、それは、$_POST

編集:提案されたコードを追加しました..

$album = $_POST['album'];
print_r($_POST);
var_dump($album);
$dir = new DirectoryIterator("images/gallery/$album");
//rest of code...

print_r($_POST)プリントアウト Array ( [album] => album1 )
var_dump($album)プリントアウトstring 'album1' (length=6)

4

1 に答える 1

1

パスの前に追加../する必要があったことがわかりました..パスが重複していない場合は、これをもっと早く理解できたかもしれませんが、そのため、道。これが機能する完全なコードです。追加した../のはパスの前だけです。

$album = $_POST['album'];
$dir = new DirectoryIterator("../images/gallery/$album");
foreach ($dir as $fileInfo)
{
    if($fileInfo->isDot()) continue;
    $pic = $fileInfo->getFilename();

    print "<div>
                <img src='images/gallery/$album/$pic'>
            </div>";
}
于 2013-02-10T16:33:17.000 に答える