起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2843|回复: 3

[分享] 分享百度的天气预报API写的天气预报

  [复制链接]

8

主题

43

帖子

149

积分

初级会员

Rank: 2

积分
149
QQ
发表于 2016-3-23 20:36:07 | 显示全部楼层 |阅读模式
今天试做了一个天气预报的功能!!用的是百度的api,没有的话自己去申请一个!!

本人初学者水平,js初学、php初学、css初学、wex5初学!!什么都会点,就是不精!!如果代码可以优化,请多指教!!

1、后端用PHP写的,主要是解决跨域问题,还有就是重新整理了json数据,分为两个:一个是天气json,一个是指数json:
  1. <?php
  2. if ($_GET['ac'] == 'getWeather') {
  3.         header("Access-Control-Allow-Origin: *");
  4.         $url = "http://api.map.baidu.com/telematics/v3/weather?location=%E6%83%A0%E5%B7%9E&output=json&ak=你的AK";
  5.         $data = file_get_contents($url);
  6.         $obj = json_decode($data);
  7.         echo json_encode($obj->results['0']->weather_data);
  8. }elseif ($_GET['ac'] == 'getZs') {
  9.         header("Access-Control-Allow-Origin: *");
  10.         $url = "http://api.map.baidu.com/telematics/v3/weather?location=%E6%83%A0%E5%B7%9E&output=json&ak=你的AK";
  11.         $data = file_get_contents($url);
  12.         $obj = json_decode($data);
  13.         echo json_encode($obj->results['0']->index);
  14. }
复制代码
2、在w页新建两个data,分别是weatherData和zsData
  1. //加载天气数据
  2.         Model.prototype.weatherDataCustomRefresh = function(event) {
  3.                 $.support.cors = true;
  4.                 var weatherData = event.source;
  5.                 $.ajax({
  6.                         type : "GET",
  7.                         url : "http://127.0.0.1/test.php?ac=getWeather",
  8.                         dataType : 'json',
  9.                         async : false,//使用同步方式,目前data组件有同步依赖
  10.                         cache : false,
  11.                         success : function(data) {
  12.                                 weatherData.loadData(data);//将返回的数据加载到data组件
  13.                         },
  14.                         error : function() {
  15.                                 throw justep.Error.create("加载数据失败11");
  16.                         }
  17.                 });
  18.         };
  19.        
  20.         //加载指数数据
  21.         Model.prototype.zsDataCustomRefresh = function(event) {
  22.                 $.support.cors = true;
  23.                 var zsData = event.source;
  24.                 $.ajax({
  25.                         type : "GET",
  26.                         url : "http://127.0.0.1/test.php?ac=getZs",
  27.                         dataType : 'json',
  28.                         async : false,//使用同步方式,目前data组件有同步依赖
  29.                         cache : false,
  30.                         success : function(data) {
  31.                                 zsData.loadData(data);//将返回的数据加载到data组件
  32.                         },
  33.                         error : function() {
  34.                                 throw justep.Error.create("加载数据失败22");
  35.                         }
  36.                 });
  37.         };
复制代码
3、剩下的就是list出来数据了,很简单吧!!!

效果

效果

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-3-23 21:14:14 | 显示全部楼层
回复

使用道具 举报

8

主题

43

帖子

149

积分

初级会员

Rank: 2

积分
149
QQ
 楼主| 发表于 2016-3-23 23:18:15 | 显示全部楼层
简化了一下后端的php代码,由原来的两次file_get_contents合成一次!
  1. <?php

  2. header("Access-Control-Allow-Origin: *");
  3. $url = "http://api.map.baidu.com/telematics/v3/weather?location=%E6%83%A0%E5%B7%9E&output=json&ak=你的AK";
  4. $data = file_get_contents($url);
  5. $obj = json_decode($data);

  6. if ($_GET['ac'] == 'getWeather') {
  7.         echo json_encode($obj->results['0']->weather_data);
  8. }elseif ($_GET['ac'] == 'getZs') {
  9.         echo json_encode($obj->results['0']->index);
  10. }
复制代码
回复 支持 反对

使用道具 举报

1

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
QQ
发表于 2018-5-25 14:06:07 | 显示全部楼层
厉害厉害,学习了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-2 16:55 , Processed in 0.064738 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表