欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP+AJAX无刷新实现返回天气预报数据

程序员文章站 2022-10-30 21:09:23
用php来写一个天气预报的模块 天气数据是通过采集中国气象网站的。本来中国天气网站也给出了数据的api接口。以下是api的地址。返回的数据格式为json格式。 1. htt...
用php来写一个天气预报的模块

天气数据是通过采集中国气象网站的。本来中国天气网站也给出了数据的api接口。以下是api的地址。返回的数据格式为json格式。

1. http://www.weather.com.cn/data/sk/101010100.html
2. http://www.weather.com.cn/data/cityinfo/101010100.html
3. http://m.weather.com.cn/data/101010100.html

url中的数字”101010100“是城市代码。所以可以先列出每个城市的城市代码,然后php程序接收到了城市代码,再去组装url,在通过url来显示该城市的实时天气。

index.php
复制代码 代码如下:

<?php
header("content-type:text/html;charset=utf-8");
?>
<html>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<head>
<title>weather forecast</title>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
function $(id){
return document.getelementbyid(id);
}
function getcityid(){
var http_request=createajax();
var url="weatherforecast.php"
var data="cityid="+$("cityid").value;
http_request.onreadystatechange=getwetherinfo;
http_request.open("post",url,true);
http_request.setrequestheader("content-type","application/x-www-form-urlencoded");
http_request.send(data);
function getwetherinfo(){
if(http_request.readystate==4 && http_request.status==200){
var info=http_request.responsetext;
$("weatherinfo").innerhtml=info;
}
}
}
</script>
</head>
<body>
<select name="cityid" onchange="getcityid();" id="cityid">
<option>--请选择城市--</option>
<option value="101010100">北京</option>
<option value="101020100">上海</option>
<option value="101030100">天津</option>
<option value="101040100">重庆</option>
<option value="101280101">广州</option>
</select>
<span id="weatherinfo"></span>
</body>
</html>

weatherforecast.php
复制代码 代码如下:

<?php
header("content-type:text/html;charset=utf-8");
header("cache-control:no-cache");
if (isset($_post['cityid'])){
$cityid=$_post['cityid'];
$url=$url="http://www.weather.com.cn/data/sk/".$cityid.".html";
}else {
$url="http://www.weather.com.cn/data/sk/101010100.html";
}
$weatherinfo_json=file_get_contents($url);
$weatherinfo=json_decode($weatherinfo_json,true);
$cityname=$weatherinfo['weatherinfo']['city'];
$citytemp=$weatherinfo['weatherinfo']['temp'];
$citywd=$weatherinfo['weatherinfo']['wd'];
$cityws=$weatherinfo['weatherinfo']['ws'];
$citytime=$weatherinfo['weatherinfo']['time'];
$citysd=$weatherinfo['weatherinfo']['sd'];
echo $weatherinfo="城市名字:$cityname,气温:$citytemp,风向:$citywd";
?>