提问人:Jose Lages 提问时间:2/12/2023 最后编辑:marc_sJose Lages 更新时间:2/12/2023 访问量:127
未捕获的 TypeError:无法读取 undefined 的属性(读取“stationName”)
Uncaught TypeError: Cannot read properties of undefined (reading 'stationName')
问:
请原谅我这个愚蠢的问题,但老实说我无法解决这个问题。我已经搜索了一遍,但我仍然无法理解导致错误的原因。
我正在学习如何编码,其中一项练习的任务是创建一个基本的应用程序。但是,我正在使用 jQuery 和 PHP(我只是对它们有肤浅的理解)。
我能够连接并接收响应,但是,当我尝试使用 api 中的信息更新 html 时,它不起作用,并且在控制台中出现此错误:
未捕获的 TypeError:无法读取 undefined 的属性(读取“stationName”)
请参阅下面的代码:
[HTML全
<h2>Airport Weather</h2>
<select id="selectAirport">
<option value="LPPR">Porto</option>
<option value="LZZH">Zurich</option>
<option value="LFPO">Paris</option>
<option value="EGLC">London</option>
</select>
<button id="btnRun">Check weather</button>
<table>
<tr>
<td>Airport Name:</td>
<td id="aiport"></td>
</tr>
<tr>
<td>Time:</td>
<td id="time"></td>
</tr>
<tr>
<td>Temperature:</td>
<td id="temp"></td>
</tr>
<tr>
<td>Humidity:</td>
<td id="humidity"></td>
</tr>
<tr>
<td>Clouds:</td>
<td id="clouds"></td>
</tr>
<tr>
<td>Wind Direction:</td>
<td id="windDirection"></td>
</tr>
<tr>
<td>Wind Speed:</td>
<td id="windSpeed"></td>
</tr>
</table>
JS:
$('#btnRun').click(function () {
$.ajax({
url: 'php/getUrl.php',
type: 'POST',
dataType: 'json',
data: {
search: $('#selectAirport').val(),
},
success: function (result) {
console.log(JSON.stringify(result));
if (result.status.name == 'ok') {
$('#airport').html(result['data'][0]['stationName']);
$('#time').html(result['data'][0]['datetime']);
$('#clouds').html(result['data'][0]['clouds']);
$('#windDirection').html(result['data'][0]['windDirection']);
$('#windSpeed').html(result['data'][0]['windSpeed']);
$('#temp').html(result['data'][0]['temperature']);
$('#humidity').html(result['data'][0]['humidity']);
}
},
error: function (jqXHR, textStatus, errorThrown) {
//
},
});
});
PHP的:
<?php
// remove for production
ini_set('display_errors', 'On');
error_reporting(E_ALL);
$executionStartTime = microtime(true);
$url = 'http://api.geonames.org/weatherIcaoJSON?ICAO=' . $_REQUEST['search'] . '&username=joselages';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
$decode = json_decode($result, true);
$output['status']['code'] = "200";
$output['status']['name'] = "ok";
$output['status']['description'] = "success";
$output['status']['returnedIn'] = intval((microtime(true) - $executionStartTime) * 1000) . " ms";
$output['data'] = $decode['weatherObservation'];
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($output);
?>
有人可以好心地告诉我我做错了什么吗?
感谢您的耐心等待
答: 暂无答案
评论
result
result['data'][0]['stationName']
result['data'][0]
result['data']
result['data']['stationName']
result.data.stationName