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 相关文章推荐
jquery.cvtooltip.js 基于jquery的气泡提示插件
Nov 19 Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
Jquery为单选框checkbox绑定单击click事件
Dec 18 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
Mar 05 Javascript
jquery文档操作wrap()方法实例简述
Jan 10 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 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
完美解决dedecms中的[html][/html]和[code][/code]问题
2007/03/20 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
node使用request请求的方法
2019/12/20 Javascript
js实现淘宝浏览商品放大镜功能
2020/10/28 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
市场部专员岗位职责
2013/11/30 职场文书
委托书如何写
2014/08/30 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
2014司机年终工作总结
2014/12/05 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android