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 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
jquery 使用简明教程
Mar 05 Javascript
JavaScript基于setTimeout实现计数的方法
May 08 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
Vuex入门到上手教程
Jun 20 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
JavaScript如何实现元素全排列实例代码
May 14 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 Javascript
使用preload预加载页面资源时注意事项
Feb 03 Javascript
Element实现动态表格的示例代码
Aug 02 Javascript
VUE中的v-if与v-show区别介绍
Mar 13 Vue.js
遍历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
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
10个简化PHP开发的工具
2014/12/25 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
laravel实现按月或天或小时统计mysql数据的方法
2019/10/09 PHP
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
JS实现多选框的操作
2020/06/24 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
python函数局部变量用法实例分析
2015/08/04 Python
深入讲解Python中的迭代器和生成器
2015/10/26 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
2014年安全生产大检查方案
2014/05/13 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
教师学期个人总结
2015/02/11 职场文书
售票员岗位职责
2015/02/15 职场文书
销售开票员岗位职责
2015/04/15 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL