2010-12-01 5 views
0

JSON 파일에서 정보를 가져 오려고하는데 데이터 변수에 아무것도 나오지 않습니다. 누구든지 내가 뭘 잘못하고 있는지 말해 줄 수 있어요. JSON 파일이 다운로드되므로 서버에서 아무것도 얻지 못하는 문제는 없습니다.jQuery JSON 문제가 발생했습니다.

function handle_geolocation_query(position) { 
    var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude + "&callback=?"; 
    $.getJSON(url, function(info){ 
     var clouds = info.weatherObservation.clouds; 
     var weather = info.weatherObservation.weatherCondition; 
     var temp = info.weatherObservation.temperature; 
     var humidity = info.weatherObservation.humidity; 
    }); 
    //console.log(clouds); 
    document.getElementById('result').innerHTML = "C:" + clouds + ", W:" + weather + ", T:" + temp + ", H:" + humidity; 
} 

감사합니다. 고마워요.

+2

의 배열로 올 수 있다고 생각, 아래의 작업을 수행하려고합니다. – kobe

+0

어쨌든 jquery를 사용하고있는 또 하나의 제안은 .inner() 대신 .html()을 사용하면됩니다. ('#result') .html(); weatherObservation 객체 또는 단일 객체의 배열입니다. – kobe

+0

"아무 것도 데이터 변수에 들어오지 않습니다"라는 문구는 "JSON 파일을 다운로드했습니다."와 모순됩니다. 그것은 무언가로 되돌아 오는 것이거나 그렇지 않습니다. – RPM1984

답변

0

innerHTML을 수정하는 코드를 콜백 내에 배치해야합니다. JS에는 기능 범위가 있음을 기억하십시오. 이러한 변수는 외부에서 액세스 할 수 없습니다. 또한 이러한 변수는 JSON 검색에서 콜백이 실행 된 후에 만 ​​설정됩니다.

function handle_geolocation_query(position) { 
    var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + position.coords.latitude + "&lng=" + position.coords.longitude + "&callback=?"; 
    $.getJSON(url, function(info){ 
     var clouds = info.weatherObservation.clouds; 
     var weather = info.weatherObservation.weatherCondition; 
     var temp = info.weatherObservation.temperature; 
     var humidity = info.weatherObservation.humidity; 
     $('#result').html("C:" + clouds + ", W:" + weather + ", T:" + temp + ", H:" + humidity); 
    }); 
} 

편집 :의 정부의 조언에 따라, 당신은 innerHTML을 변경해야 할 필요성을 찾을 때마다이의 jQuery API의 캡슐화 된 HTML() 메소드를 사용한다.

또한, 당신은 사용할 수 있습니다

console.log(info); 

을 당신의 데이터는 당신이 생각하는 방식으로 구성되어 보장하기 위해해서 getJSON 콜백에서 디버깅하는 동안.

+0

오, 당신은 나를 너무 많이 슬픔을 저장했습니다. 도와 주셔서 정말 고맙습니다. 고마워. – Aayush

+0

@aayush, 주로 래드 파이어 (Ladidfire)가 말했듯이, 구조적인 문제 일 수도 있습니다. 나는 당신이 돌아 오는 길에 접근하지 않고 있다고 생각합니다. ?? 객체의 속성을 정상적으로 액세스하는 동안 오류가 발생하면 firebug 콘솔에서 오류가 발생합니다. 오류가 발생하면 – kobe

+0

@aayush는 문제가 무엇인지 알기 원합니다. – kobe

0

내가 그 개체 당신이 당신이 액세스하는 동일한 구조를 다시주고있다 그물 패널의 JSON 탭을 확인할 수 있습니다 불을 지르고와

var clouds = info.weatherObservation.clouds; 
     var weather = info[0].weatherObservation.weatherCondition; 
     var temp = info[0].weatherObservation.temperature; 
     var humidity = info[0].weatherObservation.humidity; 
관련 문제