Ajax跨域-360天气查询

跨域获取天气
本文介绍了一个使用jQuery实现的跨域请求示例,通过更改城市ID动态获取不同城市的天气信息,并将其展示在网页上。

在360天气查询时,可以获取到响应中的跨域数据接口文件,其中包含的是获取的城市的天气情况,可以利用城市Id值得不同,利用360天气的地址,动态获取不同城市的天气情况。

例如:通过360的跨域接口获取到的广州的天气情况

思路:通过城市的ID的改变,利用jQuery的$.ajax方法实现跨域请求。城市的ID是一个变量,在成功接收文件的回调函数中得数据,分别找出未来的天气情况,然后动态添加到DOM树上。

  • HTML:简单列出几个城市,css样式省略
<div class="wrapper">
    <select>
        <option value="101300112">南宁</option>
        <option value="101280101">广州</option>
        <option value="101340101">台北</option>
        <option value="101210101">杭州</option>
        <option value="101231001">钓鱼岛</option>
        <option value="101210102">萧山</option>
    </select>
    <button>更改</button>

    <div id="box"></div>
</div>
复制代码
  • js部分
<script type="text/javascript" src="js/jquery-1.12.4.js"></script>
<script>
    //选择城市后,点击改变按钮调用获取天气的函数
    $("button").on("click",function(){
        $("#box").html("");
        getWeather($("option:selected").val());
        // console.log($("option:selected").val())
    });

    function getWeather(cityID){
        $.ajax({
            "url": "http://cdn.weather.hao.360.cn/api_weather_info.php?app=hao360&_jsonp=callback=?&code="+cityID,
            "dataType": "jsonp",
            "success": function(data){
                var weatherAll = data.weather;
                for(var i = 0; i<weatherAll.length; i++){
                    var date = weatherAll[i].date;
                    var day = weatherAll[i].info.day;
                    var night = weatherAll[i].info.night;
                    var str = "";
                    str += "<ul><h3>"+date+"</h3>";
                    str += "<li>白天的天气情况:"+day[1]+"</li>";
                    str += "<li>白天的气温:"+day[2]+"</li>";
                    str += "<li>白天的风向:"+day[3]+"</li>";
                    str += "<li>白天的风速:"+day[4]+"</li>";
                    str += "<li>夜间的天气情况:"+night[1]+"</li>";
                    str += "<li>夜间的气温:"+night[2]+"</li>";
                    str += "<li>夜间的风向:"+night[3]+"</li>";
                    str += "<li>夜间的风速:"+night[4]+"</li></ul>";
                    $(str).appendTo('#box');
                }
            }
        })
    };
    //页面加载立即执行点击事件
    $("button").triggerHandler("click");
</script>
复制代码

效果图

小结:利用了jQuery的一个跨域方法实现简单的跨域请求,实时查询城市天气。关键的是利用不同城市的ID跨域请求到相应的城市天气数据,然后从获取到的数据中,提取出要展示的信息,添加到DOM树上。

转载于:https://juejin.im/post/5a522584518825732f7e8ee9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值