私はforecast.io APIを使って遊んでいて、(最終的には)自分の地域の天気について毎日メールで送ってくれるものを作っています。API にリクエストを送信すると、すべての情報を含む JSON オブジェクトが返されます。私はJavaScriptとPHPを使用してこれを書いています。これが私がこれまでに持っているコードです(今は少し面倒です):
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type="text/javascript">
var latitude = "42";
var longitude = "-71";
var coordinates = latitude + "," + longitude;
var forecast;
$.ajax({
url: "<?php echo $_SESSION['url'] ?>42,-71",
type: "GET",
dataType: "jsonp",
crossDomain: true,
jasonpCallback: 'blah',
success: function(data) {
forecast = data;
console.log(forecast.daily.summary);
},
error: function() {
console.log("This failed.");
}
});
//**********************************
document.write(getDailySummary());
//**********************************
function getDailySummary() {
var summary = forecast.daily.summary;
return "<p>" + summary + "</p>";
}
</script>
現在、$.ajax() ステートメントは正常に実行され、予測の概要がコンソールに記録されています。ただし、getDailySummary()
あまりうまくいきません。これを実行すると、次のエラーが表示されます。
Uncaught TypeError: Cannot read property 'daily' of undefined index.php:42
getDailySummary index.php:42
(anonymous function) index.php:37
Rain on Thursday and Friday; temperatures rising to 85° on Saturday. index.php:28
これにより、forecast
未定義のように聞こえます。私の最初の考えは、スコープに関係しているということですが、予測を として定義するなど、あらゆる種類のものをいじってみましたが、window.forecast
常にこのエラーが発生します。どこが間違っていますか?