2010-11-25 6 views
0

AJAX를 사용하여 서버의 파일에서 JSON 데이터를 가져 오는 스크립트를 만들었지 만 문제를 해결하는 데 문제가 있습니다.JSON 데이터를 가져 오는 AJAX 함수

function getJSON (file) 
    { 
     var request = AjaxRequest(); 
     var json = ""; 
     request.onreadystatechange = function() 
     { 
     if(request.readyState==4 && request.status==200) 
      { 
       json = JSON.parse(request.responseText); 
      } 
     } 
     request.open("GET", file, false); 
     request.send(); 
     return json; 
    } 

기능은 I가 원하는 모든 작업을 수행하지만이 때문에 차단의 AJAX 요청에 false를 전달 결코 들었다 :

여기 내 코드입니다. 이 함수에 대해 뭔가 잘못된 것만 보이지만 변경 방법을 모릅니다. 나는 그것을 바꿔야 할까? 그렇다면 어떻게? 당신은 이런 식으로 그것을 반환 할 수

+0

jquery를 사용하면 위의 스크립트를 1 줄로 처리 할 수 ​​있다는 것을 알고 계십니까? 단지 팁. – RPM1984

답변

6

, 그것은 대신에 당신이 받아들이는 함수에 전달할 수 있습니다 .. 서버가 데이터로 응답 할 때 json = JSON.parse(request.responseText) 나중에 을, 어떻게 ... 당신은 반환 후에도 오랫동안 의미 비동기 작업입니다 이 같은 데이터 :

function getJSON (file, callback) 
{ 
    var request = AjaxRequest(); 
    request.onreadystatechange = function() 
    { 
    if(request.readyState==4 && request.status==200) 
    { 
     callback(JSON.parse(request.responseText)); 
    } 
    } 
    request.open("GET", file, false); 
    request.send(); 
} 

그런 다음 당신은 다음과 같이 호출 :

getJSON("something.json", function(data) { 
    //use data, your json object/data 
}); 

는 다음 기능에 그것을 전달 가능한 때 데이터를 사용하는이 방법은 ... 이것이다 길 asyn 만성 전화는 행동하기위한 것입니다.

+1

닉,이 정보는 저에게 시간을 절약 해주었습니다. 감사합니다. 누군가이 사람 한테 인상을 줘. –

관련 문제