2010-12-01 2 views
0

JSONファイルから情報を取得しようとしていますが、データ変数に何も含まれていません。誰でも私が間違っていることを教えてもらえますか? JSONファイルがダウンロードされるので、サーバーから何も取得しないという問題はありません。jQuery JSON get

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

の配列として登場するかもしれないと思うあなたは、ネットパネル上のJSONタブを確認することができ、それはあなたがアクセスしている同じ構造をバック与えています。 – kobe

+0

とにかくjQueryを使用していますが、.innerhtmlの代わりに.html()を使用すると、simloy say( '#result')とすることができます。 weatherObservationオブジェクトまたは単一のオブジェクトの配列。 – kobe

+0

「データ変数に何も入っていません」というステートメントは、「JSONファイルがダウンロードされました」というステートメントと矛盾します。それは何かで戻って来る、またはそれdoesnt。 – 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); 
    }); 
} 

編集: GOVのアドバイスに続いて、あなたがinnerHTMLプロパティを変更する必要性を見つけるたびに、jQueryのAPIのカプセル化されたHTML()メソッドを使用する必要があります。

また、あなたが使用することができます。

console.log(info); 

ちょうどあなたのデータはあなたがそれだと思う方法で構成されていることを確認するためにgetJSONコールバックでデバッグ中。以下を行うには

+0

ああ、あなたは私にとても悲しみを救った。私は本当にあなたの助けに感謝します。どうもありがとう。 – Aayush

+0

@aayush、ほとんどが狂牛病が言ったように、それは構造上の問題かもしれない、私はあなたが戻っている方法にアクセスしていないと思う...?オブジェクトのプロパティのnormalllyにアクセスしている間に、firebugのコンソールでエラーが発生している場合は、エラーがスローされます。 – kobe

+0

@aayushは、問題を解決したらただちにお知らせします。 – kobe

0

試して、私はそれは放火犯を持つオブジェクト

var clouds = info.weatherObservation.clouds; 
     var weather = info[0].weatherObservation.weatherCondition; 
     var temp = info[0].weatherObservation.temperature; 
     var humidity = info[0].weatherObservation.humidity;