0

jquery ajax 呼び出しからの戻り値を取得する際に助けが必要です。変数をスコープ外に渡すことができません。タイマー付きの配列に一連の画像があります。最後の画像は、ajax 呼び出しから渡される変数です。

ログ: GET https://domain.com/undefined?6 404 (見つかりません)

ありがとう。

               $(document).ready(function() {

               // slideshow
               var preload = [];
               var i;
               var current = 0;
               var slideshowInterval;
               var instagramInterval;
               var image;

               // instagram
               var settings = {
                  hashtags: "foo",
                  client_id: "", // instagram API key
                  images_to_fetch: 1, // fetch 1 images every request to instagram
               }

               function instagram() {
                  $.ajax({
                     dataType: "jsonp",
                     url: "https://api.instagram.com/v1/tags/" + settings.hashtags + "/media/recent",
                     data: {
                        access_token: null,
                        client_id: settings.client_id,
                        count: settings.images_to_fetch
                     },
                     success: data
                  });

               }

               function data(response) {
                     photos = response.data;
                     console.log("Number of pictures fetched: " + photos.length);
                     for(var i = 0; i < photos.length; i++) {

                        photo = photos[i];
                        image = photo.images.standard_resolution.url; // get photo url
                     }

                     console.log("new instagram image ======> : " + image);                  

                  } // data response


               var path = [ // relative paths of images
                  'images/cat.jpg',
                  'images/fox.jpg',
                  'images/dog.jpg',
                  image // passed variable from ajax
               ];

               //preload images    
               for(i = 0; i < path.length; i++) {
                  preload[i] = new Image();
                  preload[i].src = path[i] + "?";
               }

               function slideshow() {
                  var slideshow = $("#slideshow");

                  slideshow.fadeTo('fast', 0, function() {
                     slideshow.css({
                        'background': 'url(' + preload[current++ % preload.length].src + new Date().getDate() + ')'
                     });
                  }).fadeTo('fast', 1);
               }


               setInterval(instagram, 15000);

               setInterval(slideshow, 15000);

            });
4

0 に答える 0