2014-04-29 4 views
1

Instagram 이미지의 링크 값을 배열에 추가하려고합니다. 링크 값이 콘솔에서 잘 보이지만 내 배열 길이는 0이고 ajax 함수 다음입니다. 또한 모든 링크 앞에 '0'이 표시됩니다.아약스 배열에 항목을 추가 할 수 없습니다

이 문제는 비동기 적으로 실행되는 ajax로 인해 발생하며 나머지 js 코드는 실제로 $ images에 추가되기 전에 실제로 실행되지만 저는 이것을 우회하는 방법을 모릅니다. 이것은 내 코드입니다 :

$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20'; 
$images = [] 

$.ajax({ 
    type:'get', 
    dataType:'jsonp', 
    cache: false, 
    url: $liked, 
    success: function(data) { 
     for (var i = 0; i < data.data.length; i++) { 
      console.log(data.data[i].images.standard_resolution.url); 
      $images.push(data.data[i].images.standard_resolution.url); 
     } 

    } 
}); 
console.log($images.length); 

답변

2

console.log는 ajax 호출이 종료되기 전에 실행됩니다. 코드를 작성하거나 데이터 루프가 끝난 직후 success 함수에 console.log를 작성하십시오.

처럼 :

$liked = 'https://api.instagram.com/v1/users/self/media/liked?access_token=' + $access_token + '&COUNT=20'; 
$images = [] 

$.ajax({ 
    type:'get', 
    dataType:'jsonp', 
    cache: false, 
    url: $liked, 
    success: function(data) { 
     for (var i = 0; i < data.data.length; i++) { 
      console.log(data.data[i].images.standard_resolution.url); 
      $images.push(data.data[i].images.standard_resolution.url); 
     } 
     console.log($images.length); // here the array is filled with response data 
    } 
}); 
+0

왜'$의 images'는 AJAX 호출 후 길이가 0이 될 것인가? 배열에 푸시 된 후 데이터가 그대로 남아 있지 않습니까? – aug

+0

자, 이제 올바른 배열 길이가 추가되었습니다. 그렇다면이 채워진 배열을 사용하는 모든 함수가 성공 블록 내에서 호출되어야한다는 의미입니까? – thejmazz

+0

일반적으로 네,하지만 필요에 따라 다르며 구현에 따라 달라집니다. –

관련 문제