首页 > 开发 > PHP > 正文

PHP Ajax JavaScript Json获取天气信息实现代码

2024-05-04 22:28:41
字体:
来源:转载
供稿:网友

要在自己的网站上添加一个天气预报功能,是一个很普通的需求,实现起来也不是很难。今天来介绍几个简单的方法。

使用第三方服务

有这样的一种简单的方式,借助http://www.tianqi.com/plugin/网上的天气服务,可以定制我们的显示形状,实现添加天气预报的功能。

下面给出一个简单的小例子:

代码如下:<iframe width="420" scrolling="no" height="60" frameborder="0" allowtransparency="true" src="http://i.tianqi.com/index.php?c=code&id=12&icon=1&num=5"></iframe>

间接方式

说是间接的获取天气信息,那是因为对于我们个人而言,是不可能自己发射卫星,或者维护天气预报那么大的计算量的服务的。我们是借助其他网站提供的数据接口来实现的。

思路

由于Ajax本身的特点决定了岂不能够跨域请求,所以我们需要借助PHP来试下代理的功能。具体思路如下:

客户端打开我们的网页根据PHP获得客户端IP使用第三方服务获取该IP对应的城市编码调用天气接口,根据城市编码来获取天气信息客户端获得服务器返回的数据,并显示到页面上。

使用到的服务

下面列出我们用到的一句常用的接口
 •ip转城市:”http://ip.taobao.com/service/getIpInfo.php?ip=XXX”
 •查看对应的城市的代码:http://blog.csdn.net/anbowing/article/details/21936293
 •访问天气接口,获取数据:”http://www.weather.com.cn/adat/sk/“.$city_id.”html”

下面的是几个很好的接口网站。
 •天气API接口大全 

实现代码

代码的实现,分为三步。照应我们之前的逻辑来写即可。
 •获取客户端ip对应的城市 

<?phpheader("Content-Type:text/json;charset=utf-8");// ajax 自身特性决定其不能跨域请求,所以使用php的代理模式来实现垮与请求//$url = 'http://www.weather.com.cn/adat/sk/101010100.html';// 1.获取文本内容信息;2获取url对应的数据//$data = file_get_contents($url);//echo $data;/////////////////////////////////////思路一// ip-->>城市----->>>城市代码----->>>> 天气信息// 获取ip对应的城市信息,以及编码 http://ip.taobao.com/service.getIpInfo.php?ip=60.205.8.179// 通过编码获得天气信息 http://www.weather.com.cn/adat/sk/编码.html$client_ip = "60.205.8.179";//$_SERVER['REMOTE_ADDR'];$url = "http://ip.taobao.com/service/getIpInfo.php?ip="."$client_ip";$result = file_get_contents($url);echo $result;/////////////////////////////////////思路二?>

在客户端我们就可以看到

<script> function getcitycode(){  var xhr = new XMLHttpRequest();  xhr.onreadystatechange = function(){   if(xhr.readyState==4){    //alert(xhr.responseText);     eval('var citycode='+xhr.responseText);    alert(citycode.data.city);   }  }  xhr.open('get','./getcityid.php');  xhr.send(null); }</script>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表