0

画像を含むディレクトリをプリロードしたい。

これまでのところ、私はこのコードを使用しています:

preload.php

    <?php
function listImages($dir){
    $ffs = scandir($dir);
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..' && strstr($ff, '.png') || strstr($ff, '.jpg') || strstr($ff, '.gif') || strstr($ff, '.jpeg')){
            echo '"images/'.$ff;
            if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
            echo '", ';
        }
    }
}
echo '[ ';
listImages('images');
echo ']';
// output: ["image1.png", "image2.png"] etc.
?>

フッター.php

<script type="text/javascript">
    // put contents of all_images.php file into variable 'images'

$.ajax({
  type: "GET",
  async: false,
  cache: false,
  url: "./preload.php",
  data: "getid=true",
  success: function(data){
  images=data;
  }
});

    // The variable 'images' now contains string of file names
    // needed to be preloaded.
    $.fn.preload = function() {
        this.each(function(){
            $('<img/>')[0].src = this;
        });
    }


</script>


<script type="text/javascript">
$(document).ready(function(){
$(images).preload();
</script>

しかし、うまくいかないようです。Firebugで私は得るuncaught exception: Syntax error, unrecognized expression:

「画像」の代わりにすべてのリンクを貼り付けても$(images).preload(); 、エラーは発生しませんが、画像も読み込まれません。

私は一日中ここに座ってそれを理解しようとしているので、助けていただければ幸いです。

更新 #1

だから、今私はこのようにやっています:

$(document).ready(function(){
  $.getJSON("./preload.php?getid=true", function(data) {
    var images = [];
    $.each(data, function(i, val) {
      images[i] = new Image().src=val;`

        $.fn.preload = function() {
            this.each(function(){
                $('<img/>')[0].src = this;
            });
        }
        $(images).preload();
    });
  });
});

これまでのところエラーはありませんが、firebug の [Network] タブに画像が表示されません。

4

1 に答える 1

3

いくつかの問題

getJSONを試す

$(document).ready(function(){
  $.getJSON("./preload.php?getid=true", function(data) {
    var images = [];
    $.each(data, function(i, val) {
      images[i] = new Image().src=val;
    });
  });
});
于 2012-11-14T14:54:43.307 に答える