我正在尝试使用weatherunderground api来显示天气信息。
运行我的代码时,我收到以下消息。
TypeError:undefined不是对象(评估 ' parsed_json ['位置'] ['城市']&#39)
我不确定为什么会这样或如何解决这个问题。我是JavaScript和jQuery的新手。
这是我的代码
$(document).ready(function() {
$.ajax({
url : "http://api.wunderground.com/api/dddb7758c5d626fc/geolookup/conditions/q/IA/Cedar_Rapids.json",
dataType : "jsonp",
success : function(parsed_json) {
var location = parsed_json['location']['city'];
var temp_f = parsed_json['current_observation']['temp_f'];
alert("Current temperature in " + location + " is: " + temp_f);
}
});
});

更新我的api后它可以工作,但我仍然在控制台中收到相同的消息
答案 0 :(得分:1)
您的成功功能意味着您已经到达了api,但此API可以返回错误!
看看我去网址时得到了什么:
{
"response": {
"version":"0.1",
"termsofService":"http://www.wunderground.com/weather/api/d/terms.html",
"features": {
}
,
"error": {
"type": "invalidkey"
,"description": "this key is not valid due to exceeding rate plan"
}
}
}
因此,请检查您的API密钥,并在执行任何操作之前检查是否存在错误。同样,总是检查所有内容,所以如果没有错误就发生事件,在尝试用它做其他事情之前检查值是否存在!
答案 1 :(得分:0)
始终检查错误:
所以不要像你一样立即使用数据,试试
success : function(parsed_json) {
if(parsed_json.response.error) {
// found error
alert('ERROR: ' + JSON.stringify(parsed_json.response.error);
return;
}
// all good!
var location = parsed_json['location']['city'];
var temp_f = parsed_json['current_observation']['temp_f'];
alert("Current temperature in " + location + " is: " + temp_f);
}
这是一个实例:
$(function() {
getWeather();
});
function getWeather() {
var serviceUrl = "https://api.wunderground.com/api/dddb7758c5d626fc/geolookup/conditions/q/IA/Cedar_Rapids.json";
$.ajax({
// The url
url: serviceUrl,
// The name of the callback parameter, as specified by the YQL service
jsonp: "callback",
// Tell jQuery we're expecting JSONP
dataType: "jsonp",
// Work with the response
success: function( response ) {
console.log( response ); // server response
var msg = "";
if(response.response.error) {
msg = "ERROR FOUND\n" + JSON.stringify(response.response.error);
}
else {
msg = JSON.stringify(response.response);
}
$("pre").text(msg);
}
});
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Example</title>
<script src="https://code.jquery.com/jquery-git.js"></script>
</head>
<body>
<pre></pre>
</body>
</html>