jquery和雅虎的yql服务实现天气预报服务示例

 更新时间:2014年02月08日 15:30:41   作者:  
本文介绍一个利用Jquery和雅虎的YQL服务实现天气预报功能,需要的朋友可以参考下

本代码不涉及任何后端开发代码(如.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代码如下:

复制代码 代码如下:

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+"&nbsp;"+J_data.weatherinfo.week+"&nbsp;"+J_data.weatherinfo.temp1+"&nbsp;"+J_data.weatherinfo.weather1+"&nbsp;"+J_data.weatherinfo.wind1+"&nbsp;"+J_data.weatherinfo.index+"&nbsp;"+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日")+"&nbsp;"+getweekdays(t2)+"&nbsp;"+J_data.weatherinfo.temp2+"&nbsp;"+J_data.weatherinfo.weather2+"&nbsp;"+J_data.weatherinfo.wind2+"</p>");

                       var t3 = new Date();

                      t3.setDate(tdy.getDate()+2);
                      $("#content").append("<p>"+t3.Format("yyyy年MM月dd日")+"&nbsp;"+getweekdays(t3)+"&nbsp;"+J_data.weatherinfo.temp3+"&nbsp;"+J_data.weatherinfo.weather3+"&nbsp;"+J_data.weatherinfo.wind3+"</p>");

                      var t4 = new Date();

                      t4.setDate(tdy.getDate()+3);
                      $("#content").append("<p>"+t4.Format("yyyy年MM月dd日")+"&nbsp;"+getweekdays(t4)+"&nbsp;"+J_data.weatherinfo.temp4+"&nbsp;"+J_data.weatherinfo.weather4+"&nbsp;"+J_data.weatherinfo.wind4+"</p>");

                      var t5 = new Date();

                      t5.setDate(tdy.getDate()+4);
                      $("#content").append("<p>"+t5.Format("yyyy年MM月dd日")+"&nbsp;"+getweekdays(t5)+"&nbsp;"+J_data.weatherinfo.temp5+"&nbsp;"+J_data.weatherinfo.weather5+"&nbsp;"+J_data.weatherinfo.wind5+"</p>");

                      var t6 = new Date();

                      t6.setDate(tdy.getDate()+5);
                      $("#content").append("<p>"+t6.Format("yyyy年MM月dd日")+"&nbsp;"+getweekdays(t6)+"&nbsp;"+J_data.weatherinfo.temp6+"&nbsp;"+J_data.weatherinfo.weather6+"&nbsp;"+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 scroll事件实现监控滚动条分页示例

    jQuery scroll事件实现监控滚动条分页示例

    这篇文章主要介绍了jQuery scroll事件实现监控滚动条分页简单示例,使用ajax加载,同时介绍了(document).height()与$(window).height()的区别,需要的朋友可以参考下
    2014-04-04
  • jquery实现转盘抽奖功能

    jquery实现转盘抽奖功能

    本文主要介绍了用的jqueryRotate插件实现转盘抽奖功能的方法,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Jquery获得控件值的三种方法总结

    Jquery获得控件值的三种方法总结

    本篇文章主要是对Jquery获得控件值的三种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02
  • jQuery中调用WebService方法小结

    jQuery中调用WebService方法小结

    以前在写ajax请求时,总是喜欢使用jQuery+ashx的方式进行调用,今天采取jQuery+WebService的方法来做ajax请求,发现这种方式比使用ashx的方式要更方便。
    2011-03-03
  • jQuery模拟淘宝购物车功能

    jQuery模拟淘宝购物车功能

    本文主要介绍了用jQuery模拟淘宝购物车功能的实例,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • jQuery设计思想

    jQuery设计思想

    在深入了解jQuery的各个细节之前,需要对jQuery的设计思想有一个大致的了解。在遇到问题时, 知道应该使用jQuery的哪一个功能,然后迅速从手册中找到具体的用法。本文将详细介绍jQuery的设计思想。下面跟着小编一起来看下吧
    2017-03-03
  • JQuery实现表格中相同单元格合并示例代码

    JQuery实现表格中相同单元格合并示例代码

    一定要注意如果从list的开始元素循环下去,remove掉一个元素后,有些元素就找不到了或者说不是要找的那个元素,感兴趣的各位可以研究下哈
    2013-06-06
  • 基于jquery编写的放大镜插件

    基于jquery编写的放大镜插件

    这篇文章主要为大家详细介绍了基于jquery编写的放大镜插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • jQuery实现点击按钮文字变成input框点击保存变成文字

    jQuery实现点击按钮文字变成input框点击保存变成文字

    这篇文章主要介绍了jQuery实现点击按钮文字变成input框点击保存变成文字的相关资料,非常具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • jquery实现弹出div,始终显示在屏幕正中间的简单实例

    jquery实现弹出div,始终显示在屏幕正中间的简单实例

    本篇文章主要是对jquery实现弹出div,始终显示在屏幕正中间的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03

最新评论