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 相关文章推荐
javascript中怎么做对象的类型判断
Nov 11 Javascript
JQuery中dataGrid设置行的高度示例代码
Jan 03 Javascript
使用jQuery的attr方法来修改onclick值
Jul 07 Javascript
javascript获取重复次数最多的字符
Jul 08 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
Jul 27 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
微信小程序 实战小程序实例
Oct 08 Javascript
js表单登陆验证示例
Oct 19 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
JavaScript代码执行的先后顺序问题
Oct 29 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
咖啡与牛奶
2021/03/03 冲泡冲煮
用PHP和ACCESS写聊天室(五)
2006/10/09 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
javascript数组的使用
2013/03/28 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
Angular6新特性之Angular Material
2018/12/28 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
微信小程序实现图片压缩
2019/12/03 Javascript
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
python调用staf自动化框架的方法
2018/12/26 Python
一篇文章搞定Python操作文件与目录
2019/08/13 Python
Python爬取爱奇艺电影信息代码实例
2019/11/26 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
办公自动化毕业生求职信
2014/03/09 职场文书
项目负责人任命书
2014/06/04 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
公司感谢信范文
2015/01/22 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫