2013-12-22 2 views
1

다른 함수의 함수에서 얻은 getJSON 결과를 사용하려고하는데 어떻게해야할지 모르겠지만 아무도 도와 줄 수 없습니까?다른 함수에서 JSON 콜백 사용

필자는 입력에서 텍스트를 가져와 관련 이미지를 보려면 플리커를보고, 나중에 JSON 호출을 사용하여 해당 사진을 찍어 내 페이지에 표시해야합니다.

dataservices.pictureFeedService.searchForPictures(searchTags, dataservices.picturesLayoutService.buildPicturesLayout("images")); 
+0

당신은 지나가고 있습니다. 'dataservices.picturesLayoutService.buildPicturesLayout ("images")'를 콜백 함수로 사용하십시오. "이미지"문자열은 첫 번째 getJson 호출 결과를 얻고 있음을 보여주는 자리 표시 자입니까? –

+0

jquery promise 또는 Q 라이브러리를 체크 아웃 할 수 있습니다. 이 시나리오를 다루기가 더 쉬워졌습니다. – lucuma

답변

0
:

dataservices.picturesLayoutService = function() { 

    function buildPicturesLayout(divImageContainer) { 
     $.getJSON(function(data) { 
      //read images url 
      // Pop our HTML in the #images DIV 
      $("#" + divImageContainer).html(htmlString); 
     }); 
    } 
    return { 
     buildPicturesLayout: buildPicturesLayout 
    }; 
}(); 

내가 이런 식으로 함수를 호출 :

dataservices.pictureFeedService = function() { 

    function searchForPictures(searchFilterEntry, callback) { 
     var query = "http://www.flickr.com/services/feeds/photos_public.gne?tags=" + searchFilterEntry + "&format=json&jsoncallback=?"; 

     $.getJSON(query,callback); 
    } 

    return { 
     searchForPictures: searchForPictures 
    }; 
}(); 

이, 나는 이전 JSON에서 얻은 데이터를 사용하는 두 번째 함수하고자한다 : 이것은 이미 한 일이다

같은 것을 시도하십시오

dataservices.picturesLayoutService = function() { 
    function buildPicturesLayout(divImageContainer, data) { 
     $("#" + divImageContainer).empty(); 
     //iterate through the items and create a list 
     $.each(data.items, function (i, item) { 
      $("#" + divImageContainer).append('<img src="' + item.media.m + '" />'); 
     }) 
    } 
    return { 
     buildPicturesLayout: buildPicturesLayout 
    }; 
}(); 
//write a callback function which will receive the ajax response and pass it to the buildPicturesLayout method 
dataservices.pictureFeedService.searchForPictures(searchTags, function (data) { 
    dataservices.picturesLayoutService.buildPicturesLayout("images", data) 
}); 
+0

감사합니다. ^^ – Razziel