我正在使用此链接从API https://api-ninjas.com/api/airquality获取空气质量数据
我想通过PHP来实现这一点,因为这是一项要求
我有我的PHP文件
<?php
// Display errors is set to on and should be removed for production
ini_set('display_errors', 'On');
error_reporting(E_ALL);
// Timing script execution
$executionStartTime = microtime(true);
$url='https://api.api-ninjas.com/v1/airquality?city=' . $_REQUEST['countryName'];
// Curl object is initiated
$ch = curl_init();
//Curl_setopt() takes three parameters(Curl instance to use, setting you want to change, value you want to use for that setting)
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['result'] = $decode['result'];
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($output);
?>
然后是我的JavaScript函数
function getAirQuality(countryName) {
$.ajax({
method: 'GET',
url: "assets/php/getAirQuality.php",
data: {
countryName: countryName
},
headers: {
'X-Api-Key': 'API_KEY'
},
contentType: 'application/json',
success: function(result) {
console.log(result);
$('#aqCO').html(result['CO']['concentration'] + ' ppm');
$('#aqSO').html(result['SO2']['concentration'] + ' ppm');
$('#aqO3').html(result['O3']['concentration'] + ' g/m3');
$('#aqNO2').html(result['NO2']['concentration'] + ' ppm');
$('#aqPM2').html(result['PM2.5']['concentration'] + ' µg/m3');
$('#aqPM10').html(result['PM10']['concentration'] + ' µg/m3');
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
}
但是,PHP文件在控制台Error: <br /> <b>Warning</b>: Undefined array key "result" in <b>C:\xampp1\htdocs\project1\assets\php\getAirQuality.php</b> on line <b>30</b><br /> {"status":{"code":"200","name":"ok","description":"success","returnedIn":"293 ms"},"result":null}
中一直抱怨
从上面的网站可以看到,结果应该是这样的
{
"CO": {
"concentration": 223.64,
"aqi": 2
},
"NO2": {
"concentration": 9.08,
"aqi": 11
},
"O3": {
"concentration": 26.46,
"aqi": 22
},
"SO2": {
"concentration": 0.78,
"aqi": 1
},
"PM2.5": {
"concentration": 4.04,
"aqi": 13
},
"PM10": {
"concentration": 6.23,
"aqi": 5
},
"overall_aqi": 22
}
我不知道还能是什么?我试过result
、results
和data
***UPDATE***因此,虽然我已将数据解码为正确
result
:
CO
:
{concentration: 223.64, aqi: 2}
NO2
:
{concentration: 19.71, aqi: 24}
O3
:
{concentration: 52.93, aqi: 44}
PM2.5
:
{concentration: 11.67, aqi: 37}
PM10
:
{concentration: 14.61, aqi: 13}
SO2
:
{concentration: 1.97, aqi: 2}
overall_aqi
:
44
我试着把它们赋值给这样的变量:$('#aqCO').html(result['CO']['concentration'] + ' ppm');
,但它返回的是Uncaught TypeError: Cannot read properties of undefined (reading 'concentration')
1条答案
按热度按时间k3bvogb11#
您可以通过创建数组并通过以下方式传递头:弯曲_高温集管