PHP Ajax JavaScript Json获取天气信息实现代码
要在自己的网站上添加一个天气预报功能,是一个很普通的需求,实现起来也不是很难。今天来介绍几个简单的方法。 使用第三方服务 有这样的一种简单的方式,借助
下面给出一个简单的小例子: 间接方式说是间接的获取天气信息,那是因为对于我们个人而言,是不可能自己发射卫星,或者维护天气预报那么大的计算量的服务的。我们是借助其他网站提供的数据接口来实现的。 思路由于Ajax本身的特点决定了岂不能够跨域请求,所以我们需要借助PHP来试下代理的功能。具体思路如下: 客户端打开我们的网页根据PHP获得客户端IP使用第三方服务获取该IP对应的城市编码调用天气接口,根据城市编码来获取天气信息客户端获得服务器返回的数据,并显示到页面上。 使用到的服务下面列出我们用到的一句常用的接口 •ip转城市:”http://ip.taobao.com/service/getIpInfo.php?ip=XXX” •查看对应的城市的代码: •访问天气接口,获取数据:”http://www.weather.com.cn/adat/sk/“.$city_id.”html” 下面的是几个很好的接口网站。 • 实现代码代码的实现,分为三步。照应我们之前的逻辑来写即可。 •获取客户端ip对应的城市 // 1.获取文本内容信息;2获取url对应的数据
//$data = file_get_contents($url); //echo $data; /////////////////////////////////////思路一 /////////////////////////////////////思路二 ?> 在客户端我们就可以看到
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);
}
•再向服务器请求一下城市代码,传给天气接口即可。 $city_id = $_GET['city'];
//print_r($GET); 调用数据库代码逻辑,查找到对应的城市的城市编码 只需要从我们实现存储好的城市表中警醒查找即可。而且城市编码的表基本上不发生变化,我们可以稳定的使用。 $weather_url = "http://www.weather.com.cn/adat/sk/".$city_id."html"; $weather = file_get_contents($weather_url); echo $weather; ?> 前端完整代码 获取城市代码 |