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 相关文章推荐
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
javascript中数组的concat()方法使用介绍
Dec 18 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
Sep 10 Javascript
动态加载jQuery的两种方法实例分析
Jul 17 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
Sep 06 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
Dec 08 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
p5.js入门教程之键盘交互
Mar 19 Javascript
原生js实现拖拽功能基本思路详解
Apr 18 Javascript
微信小程序实现循环动画效果
Jul 16 Javascript
JQuery常用简单动画操作方法回顾与总结
Dec 07 jQuery
基于react项目打包css引用路径错误解决方案
Oct 28 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中的stdClass类
2014/04/18 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
基于jquery的跨域调用文件
2010/11/19 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
对new functionName()定义一个函数的理解
2014/05/22 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
JS实现的DOM插入节点操作示例
2018/04/04 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Python中用字符串调用函数或方法示例代码
2017/08/04 Python
Python生成数字图片代码分享
2017/10/31 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
Python threading的使用方法解析
2019/08/28 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
python实现人机猜拳小游戏
2020/02/03 Python
python通过matplotlib生成复合饼图
2020/02/06 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
2019/04/19 HTML / CSS
介绍一下Python中webbrowser的用法
2013/05/07 面试题
社区庆中秋节活动方案
2014/02/07 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
2014年幼师工作总结
2014/11/22 职场文书
会计岗位职责
2015/02/03 职场文书
Java中的随机数Random
2022/03/17 Java/Android
MySQL分区表管理命令汇总
2022/03/21 MySQL
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript