jquery和雅虎的yql服务实现天气预报服务示例


Posted in Javascript onFebruary 08, 2014

本代码不涉及任何后端开发代码(如.Net,JAVA等)。目前最权威的天气预报数据是中国天气网(http://www.weather.com.cn/),因为这个是官方提供的气象数据,除了商业的增值服务外,还提供了免费的以JSON数据格式返回的气象数据,以查看杭州的天气数据为例,可以输入以下地址:http://m.weather.com.cn/data/101210101.html ,返回的JSON数据格式如下图:

YQL服务可以实现对网上不同数据源的query,filter,combine(查询,过滤,合并),提供类似SQL,具体地址如下:http://developer.yahoo.com/yql/console/ 。当实施查询的时候,YQL服务就会访问网络上的数据源,传输数据,返回XML或者JSON形式的数据结果。YQL可以使用许多类型的数据源,包括Yahoo!Web services 或者其他的网络服务,和网络数据类型例如:HTML, XML, RSS,和Atom。

因此可以通过两者的结合使用,完成天气预报功能的开发,具体JS代码如下:

jquery和雅虎的yql服务实现天气预报服务示例

function getWeather() {             $.getJSON("http://query.yahooapis.com/v1/public/yql", {
                 q: "select * from json where url=\"http://m.weather.com.cn/data/101210101.html\"",
                format: "json"
            }, function (data) {
                if (data.query.results) {
                    //$("#content").text(JSON.stringify(data.query.results));
                    var J_data = JSON.parse(JSON.stringify(data.query.results));
                     //alert(J_data.weatherinfo.city);
                       $("#content").append("<p>"+J_data.weatherinfo.city+"天气预报(数据来源中国天气网)"+"</p>");
                     $("#content").append("<p>"+J_data.weatherinfo.date_y+" "+J_data.weatherinfo.week+" "+J_data.weatherinfo.temp1+" "+J_data.weatherinfo.weather1+" "+J_data.weatherinfo.wind1+" "+J_data.weatherinfo.index+" "+J_data.weatherinfo.index_d+"</p>");
                     var t= J_data.weatherinfo.date_y;
                     t=t.replace("年","/");
                     t=t.replace("月","/");
                     t=t.replace("日","");

                     var tdy = new Date(t);  
                     var t2 = new Date();       
                   
                      t2.setDate(tdy.getDate()+1);
                    
                      $("#content").append("<p>"+ t2.Format("yyyy年MM月dd日")+" "+getweekdays(t2)+" "+J_data.weatherinfo.temp2+" "+J_data.weatherinfo.weather2+" "+J_data.weatherinfo.wind2+"</p>");
                       var t3 = new Date();
                      t3.setDate(tdy.getDate()+2);
                      $("#content").append("<p>"+t3.Format("yyyy年MM月dd日")+" "+getweekdays(t3)+" "+J_data.weatherinfo.temp3+" "+J_data.weatherinfo.weather3+" "+J_data.weatherinfo.wind3+"</p>");
                      var t4 = new Date();
                      t4.setDate(tdy.getDate()+3);
                      $("#content").append("<p>"+t4.Format("yyyy年MM月dd日")+" "+getweekdays(t4)+" "+J_data.weatherinfo.temp4+" "+J_data.weatherinfo.weather4+" "+J_data.weatherinfo.wind4+"</p>");
                      var t5 = new Date();
                      t5.setDate(tdy.getDate()+4);
                      $("#content").append("<p>"+t5.Format("yyyy年MM月dd日")+" "+getweekdays(t5)+" "+J_data.weatherinfo.temp5+" "+J_data.weatherinfo.weather5+" "+J_data.weatherinfo.wind5+"</p>");
                      var t6 = new Date();
                      t6.setDate(tdy.getDate()+5);
                      $("#content").append("<p>"+t6.Format("yyyy年MM月dd日")+" "+getweekdays(t6)+" "+J_data.weatherinfo.temp6+" "+J_data.weatherinfo.weather6+" "+J_data.weatherinfo.wind6+"</p>");
 
                     //alert(getweekdays(t2)); 
                } else {
                     $("#content").text('no such code: ' + code);
                 }
             });
          //$.getJSON("http://m.weather.com.cn/data/101210101.html", null, function(json) { alert(json); });             
        }
        function getweekdays(datey)
        {
           if(datey.getDay()==0)
           {
             return "星期日";
           }
           else if(datey.getDay()==1)
           {
              return "星期一";
           }
           else if(datey.getDay()==2)
           {
              return "星期二";
           }
           else if(datey.getDay()==3)
           {
              return "星期三";
           }
           else if(datey.getDay()==4)
           {
              return "星期四";
           }
           else if(datey.getDay()==5)
           {
              return "星期五";
           }
           else if(datey.getDay()==6)
           {
              return "星期六";
           }
 
        }

最终实现的效果,如下图:

jquery和雅虎的yql服务实现天气预报服务示例

Javascript 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
js实现缓冲运动效果的方法
Apr 10 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
使用jquery实现的循环连续可停顿滚动实例
Nov 23 Javascript
js判断文件类型大小并给出提示的实现方法
Jan 03 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
Vue header组件开发详解
Jan 26 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
May 05 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
Vue实现移动端拖拽交换位置
Jul 29 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
用Javascript实现发送短信验证码间隔功能
Feb 08 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 #Javascript
JS的参数传递示例介绍
Feb 08 #Javascript
js控制分页打印、打印分页示例
Feb 08 #Javascript
javascript中的self和this用法小结
Feb 08 #Javascript
javascript中match函数的用法小结
Feb 08 #Javascript
纯JS实现动态时间显示代码
Feb 08 #Javascript
js数字转换为float,取N位小数
Feb 08 #Javascript
You might like
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php数组操作之键名比较与差集、交集赋值的方法
2014/11/10 PHP
php字符串函数学习之substr()
2015/03/27 PHP
培养自己的php编码规范
2015/09/28 PHP
thinkPHP5 tablib标签库自定义方法详解
2017/05/10 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
window.onload 加载完毕的问题及解决方案(上)
2009/07/09 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
编写Js代码要注意的几条规则
2010/09/10 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
2019/09/15 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
js实现简单的打印表格
2020/01/15 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[02:27]2018DOTA2亚洲邀请赛趣味视频之钓鱼大赛 谁是垂钓冠军?
2018/04/05 DOTA
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
python实现随机梯度下降法
2020/03/24 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
centos7之Python3.74安装教程
2019/08/15 Python
python实现最短路径的实例方法
2020/07/19 Python
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
优秀班干部事迹材料
2014/01/26 职场文书
我们的节日中秋活动方案
2014/08/19 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
Pandas数据类型之category的用法
2021/06/28 Python
Pandas自定义选项option设置
2021/07/25 Python