2013-12-18 2 views
3

flickr에서 이미지를 가져 오는 자바 스크립트 파일을 만들었습니다. 이제 저는 그 데이터가 세계적으로 액세스 될 수 있기를 바랍니다.javascript에서 아약스 호출로 전역 변수를 사용합니다.

$.getJSON('js/album.json', function(data) { 
    var myArray = data.children; 
    $.each(myArray, function(i, item) { 
     $.each(item.children, function(j, childItem){ 
      var childName = childItem.name; 
      getFlickrImage(childName, handleData, data); 
     }); 
    }); 
    new_json = data; 
}); 

가변 액세스를 전 세계적으로 원합니다. 나는 많은 검색을 한 후에 Google에 게시하여 여기에 올렸다.

+0

: 그것은

그래서 당신이 이런 식으로 할 필요가 등 고객의 인터넷 연결, 지연, 서버의 속도, 트래픽 같은 것들에 따라 달라집니다. 비동기 세계에 오신 것을 환영합니다. – David

+0

:(도울 수있는 동기식 방법이 있습니까? @David –

+0

'new_json'은'var'을 사용하지 않았기 때문에) 전역 적으로 사용할 수 있지만 서버에서 응답이 반환되지 않으면 전역 적으로 사용할 수 없습니다 – Adam

답변

0

지금까지 꽤 나쁜 답변이 있습니다.

AJAX의 비동기 세계에서 callbacks으로 작업해야합니다. AJAX를 사용하면 요청한 데이터를 언제 사용할 수 있는지 알 수 없습니다. 당신은 할 수 없습니다

function doSomeAjaxCall(myCallback) { 

    $.getJSON('js/album.json', function(data) { 
     var myArray = data.children; 
     $.each(myArray, function(i, item) { 
      $.each(item.children, function(j, childItem){ 
       var childName = childItem.name; 
       getFlickrImage(childName, handleData, data); 
      }); 
     }); 
     new_json = data; 

     myCallback.apply(window);  

    }); 

}); 

doSomeAjaxCall(function() { 
    console.log(new_json); //see? it is available globally. 
}); 
+0

감사합니다. @ 아담이 대답하는 데 도움이됩니다. :) –

+0

호기심, downvoter는 무엇입니까? 틀림없이 이것 만이이 작업을 수행하는 유일한 방법은 아니지만 약 10 가지 다른 방법이 있습니다. 이것은 한 가지 방법의 예일뿐입니다. – Adam

0

질문에 답하면 모든 "전역 변수"는 창 개체의 멤버 일뿐입니다 (브라우저에서 작업 할 때). 그래서 당신은 사용해야합니다

//... 
window.new_json = data 
//... 

위해서는 코드의 아무 곳 "new_json"에 접근 할 수 있습니다.

그러나 전역 변수는 악의적 인 것을 기억하십시오. :) 그래서 나는 적어도 다른 개체 안에 넣을 것입니다.

개인적인 조언에 따라을 먼저 살펴 봐야합니다. 코드에서 new_json이 제대로 구현되었는지 확인할 수 없기 때문입니다. 또는 다른 디자인 패턴 (어쩌면 모듈 패턴)을 생각하여 앱을 더욱 깨끗하게 만드십시오.

-2

수 없습니다. 당신은 동 기적으로 전화를해야합니다.

자세한 내용은 this related question을 참조하십시오.

+0

이 대답은 잘못되었습니다. – Adam

관련 문제