À l'aide de jQuery Cycle et ajax pour créer dynamiquement un diaporama des images n'ont pas de charge immédiatement

Je suis en train d'essayer de faire un pas cher, simple, diaporama zone de navigation pour un client (quelque chose le long des lignes de ce que, disons, les Red Sox ou Gamespot les utiliser sur leurs sites, mais beaucoup, beaucoup plus simple). Jusqu'à présent, c'est effectivement très bien, avec un problème - les images n'apparaissent pas lors d'une première visite. Ils n'apparaissent qu'après la page est rechargée. Je pense que c'est peut-être une sorte de runtime question, ou peut-être un problème de cache, mais je ne suis pas sûr de la façon de le résoudre. Mon code:

PHP:

if (isset($_GET['start']) && "true" === $_GET['start'])
{
    $images = array();

    if ($dir = dir('images'))
    {
        //$count = 0;

        while(false !== ($file = $dir->read()))
        {
            if (!is_dir($file) && $file !== '.' && $file !== '..' && (substr($file, -3) === 'jpg' || substr($file, -3) === 'png' || substr($file, -3) === 'gif'))
            {
                $lastModified = filemtime("{$dir->path}/$file");
                $images[$lastModified] = $file;
                //$images["image$count"] = $file;
                //++$count;
            }
        }

        echo json_encode($images);
    }
    else { echo "Could not open directory"; }
}

HTML et JavaScript:

<!doctype html>
<html lang="en-us">
    <head>
        <title>jQuery Cycle test</title>
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="js/jquery.cycle.all.min.js"></script>
        <style>
            #slideshow a { margin: 0; padding: 0; color: #fff; }
        </style>
    </head>

    <body>
        <div id="slideshow">
        </div>
    </body>

    <script type="text/javascript">
        $.get('slideshow.php', {start : "true"}, function(data){
            var images = JSON.parse(data);

            for(var image in images){
                $('#slideshow').append('<a href="images/' + images[image] + '"><img src="images/' + images[image] + '" alt="" /></a>');
            }

            $('#slideshow').cycle({
                fx: 'cover',
                direction: 'right',
                timeout: 3000,
                speed: 300
            });
        });
    </script>

</html>

Je pense que j'ai peut-être besoin de retarder le moment du cycle de la fonction, ou peut-être en quelque sorte le forcer à "voir" les images de la première fois. Je ne suis pas sûr de savoir comment faire.

OriginalL'auteur Major Productions | 2010-08-04