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实现检测指定目录是否存在的方法
Jan 12 Javascript
jQuery初学:find()方法及children方法的区别分析
Jan 31 Javascript
AngularJS基础知识
Dec 21 Javascript
JavaScript编程中的Promise使用大全
Jul 28 Javascript
jQuery序列化后的表单值转换成Json
Jun 16 jQuery
把JavaScript代码改成ES6语法不完全指南(分享)
Sep 10 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
vue开发移动端底部导航条功能
Apr 08 Javascript
javascript设计模式 ? 建造者模式原理与应用实例分析
Apr 10 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
Jul 31 Javascript
原生js实现放大镜组件
Jan 22 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实现的发送带附件邮件类实例
2014/09/22 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
phpinfo的知识点总结
2019/10/10 PHP
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
Vue CL3 配置路径别名详解
2019/05/30 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
layer.prompt输入层的例子
2019/09/24 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
vue-cli 关闭热更新操作
2020/09/18 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Python设计模式之门面模式简单示例
2018/01/09 Python
python利用thrift服务读取hbase数据的方法
2018/12/27 Python
Python3.5运算符操作实例详解
2019/04/25 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python离线安装外部依赖包的实现
2020/02/13 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
大学生文员专业个人求职信范文
2014/01/05 职场文书
纠风工作实施方案
2014/03/15 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
家装业务员岗位职责
2015/04/03 职场文书
匿名信格式范文
2015/05/27 职场文书