在 HTML 中显示 API 响应
Displaying API response in HTML
我正在学习 API 并且是这个过程的新手,任何帮助都会很有价值。
我已经设法获得我正在寻找的数据作为 XML 响应,并将其 console.logged 放入 chrome。我不确定如何实际访问我在控制台中看到的这个#document,请参见下面的代码和控制台打印输出
<!doctype html>
<html>
<head>
<script>
window.onload = function() {
var xhr = new XMLHttpRequest();
xhr.open("GET","http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&mode=xml&APPID=92cc96ecfe265f251d814b66592a7848",false);
xhr.send();
console.log(xhr.status);
console.log(xhr.statusText);
console.log(xhr.responseXML);
var response = xhr.responseXML;
var xmlString = (new XMLSerializer()).serializeToString(response);
if(xhr.status == 200){
document.getElementById("document").innerHTML = xmlString;
}
}
</script>
<meta charset="UTF-8">
<title>Weather API Test</title>
</head>
<body id="body">
<div id="document"></div>
</body>
</html>
并且控制台显示:
200
OK
#document
all of the XML is contained in here that I need to access and display
我找了整个周末都没有找到我能理解的解决方案。
提前致谢
我设法通过使用 PHP 和 JSON 来解决这个问题 - 在下面发帖以帮助处于同样困境的其他人
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>API TEST JSON</title>
</head>
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$place = "capetown,za";
$json_string = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=$place&units=metric&APPID=API-KEY-GOES-HERE");
$parsed_json = json_decode($json_string);
$country = $parsed_json->sys->country;
$wind = $parsed_json->wind->speed;
$city = $parsed_json->name;
$temp = $parsed_json->main->temp;
$clouds = $parsed_json->weather[0]->description;
if($clouds == "clear sky"){
echo ("<img src='http://placehold.it/200x200'>");
}
?>
<table border="1px solid black">
<tr>
<td style="color:red;">Country</td>
<td style="color:red;"><?php echo $country;?></td>
</tr>
<tr>
<td style="color:red;">City</td>
<td style="color:red;"><?php echo $city;?></td>
</tr>
<tr>
<td style="color:red;">Temperature</td>
<td style="color:red;"><?php echo $temp;?></td>
</tr>
<tr>
<td style="color:red;">Wind Speed M/S</td>
<td style="color:red;"><?php echo $wind;?></td>
</tr>
<tr>
<td style="color:red;">Cloudiness</td>
<td style="color:red;"><?php echo $clouds;?></td>
</tr>
</table>
</body>
</html>
我正在学习 API 并且是这个过程的新手,任何帮助都会很有价值。
我已经设法获得我正在寻找的数据作为 XML 响应,并将其 console.logged 放入 chrome。我不确定如何实际访问我在控制台中看到的这个#document,请参见下面的代码和控制台打印输出
<!doctype html>
<html>
<head>
<script>
window.onload = function() {
var xhr = new XMLHttpRequest();
xhr.open("GET","http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&mode=xml&APPID=92cc96ecfe265f251d814b66592a7848",false);
xhr.send();
console.log(xhr.status);
console.log(xhr.statusText);
console.log(xhr.responseXML);
var response = xhr.responseXML;
var xmlString = (new XMLSerializer()).serializeToString(response);
if(xhr.status == 200){
document.getElementById("document").innerHTML = xmlString;
}
}
</script>
<meta charset="UTF-8">
<title>Weather API Test</title>
</head>
<body id="body">
<div id="document"></div>
</body>
</html>
并且控制台显示:
200
OK
#document
all of the XML is contained in here that I need to access and display
我找了整个周末都没有找到我能理解的解决方案。
提前致谢
我设法通过使用 PHP 和 JSON 来解决这个问题 - 在下面发帖以帮助处于同样困境的其他人
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>API TEST JSON</title>
</head>
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$place = "capetown,za";
$json_string = file_get_contents("http://api.openweathermap.org/data/2.5/weather?q=$place&units=metric&APPID=API-KEY-GOES-HERE");
$parsed_json = json_decode($json_string);
$country = $parsed_json->sys->country;
$wind = $parsed_json->wind->speed;
$city = $parsed_json->name;
$temp = $parsed_json->main->temp;
$clouds = $parsed_json->weather[0]->description;
if($clouds == "clear sky"){
echo ("<img src='http://placehold.it/200x200'>");
}
?>
<table border="1px solid black">
<tr>
<td style="color:red;">Country</td>
<td style="color:red;"><?php echo $country;?></td>
</tr>
<tr>
<td style="color:red;">City</td>
<td style="color:red;"><?php echo $city;?></td>
</tr>
<tr>
<td style="color:red;">Temperature</td>
<td style="color:red;"><?php echo $temp;?></td>
</tr>
<tr>
<td style="color:red;">Wind Speed M/S</td>
<td style="color:red;"><?php echo $wind;?></td>
</tr>
<tr>
<td style="color:red;">Cloudiness</td>
<td style="color:red;"><?php echo $clouds;?></td>
</tr>
</table>
</body>
</html>