1. 程式人生 > >利用氣象局的介面寫一個自己的天氣預報

利用氣象局的介面寫一個自己的天氣預報

忽然寫自己的一個天氣預報,首先不知如何下手,首先想到的是不是講script連結引入到檔案頭部就可以了,然而接下來又要怎麼做?
在經過了半天的網上搜索後,明白了要寫的流程,
①。找到合適得介面。

在網上搜索說中國氣象局提供了三個介面
國家氣象局提供的天氣預報介面

介面地址:

101010100為城市程式碼,是固定的,這裡表示北京。然而並沒有什麼用,前兩個可以訪問,但是返回的資料太少了,最後一個說是最新的介面,資料比較多,但是我訪問的卻是403.

②。使用ajax非同步請求來獲取資料。
在這裡我使用了jquery的ajax來請求資料。success的function中的引數為請求到的資料,只需要進行第三步解析即可。

var url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101071201";
        $.ajax({
          url: url,
          dataType: "jsonp",
          // scriptCharset: "gbk",
          method:'GET',
          crossDomain: true,
         success: function (data) {

     //請求無誤,但是資料有誤,desc為介面返回的資料中的一部分,往下看
              if
(desc != "ok"){ alert("請求地區有誤"); } // //這兒寫上正常處理的流程 var description = ""; for(var i in data.data){ var property=data.data[i]; description+=i+" = "+property+"\n"; } alert(description); } error:function
(){
console.log("請求失敗"); }

③ 對介面返回的資料進行處理
返回的資料格式

{
“desc”: “OK”,
“status”: 1000,
“data”: {
“wendu”: “22”,
“ganmao”: “各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。”,
“forecast”:
[{
“fengxiang”: “南風”,
“fengli”: “3-4級”,
“high”: “高溫 26℃”,
“type”: “多雲”,
“low”: “低溫 13℃”,
“date”: “28日星期四”
},
{
“fengxiang”: “無持續風向”,
“fengli”: “微風級”,
“high”: “高溫 28℃”,
“type”: “多雲”,
“low”: “低溫 15℃”,
“date”: “29日星期五”
},
{
“fengxiang”: “無持續風向”,
“fengli”: “微風級”,
“high”: “高溫 31℃”,
“type”: “晴”,
“low”: “低溫 15℃”,
“date”: “30日星期六”
},
{
“fengxiang”: “無持續風向”,
“fengli”: “微風級”,
“high”: “高溫 29℃”,
“type”: “多雲”,
“low”: “低溫 20℃”,
“date”: “1日星期天”
},
{
“fengxiang”: “北風”,
“fengli”: “4-5級”,
“high”: “高溫 26℃”,
“type”: “小到中雨”,
“low”: “低溫 13℃”,
“date”: “2日星期一”
}],
“yesterday”: {
“fl”: “微風”,
“fx”: “無持續風向”,
“high”: “高溫 19℃”,
“type”: “小雨”,
“low”: “低溫 12℃”,
“date”: “27日星期三”
},
“aqi”: “118”,
“city”: “朝陽縣”
}
}

這是一個json格式的返回串,在js中只要將你所需要的資料解析出來就好了,
JavaScript程式碼:

 var url = "http://wthrcdn.etouch.cn/weather_mini?citykey=101071201";
        $.ajax({
          url: url,
          dataType: "jsonp",
          // scriptCharset: "gbk",
          method:'GET',
          crossDomain: true,
          success: function (data) {
              if(desc != "ok"){
            alert("請求地區有誤");
        }
        //
        //這兒寫上正常處理的流程
         }
         error:function(){
        console.log("請求失敗");
    }

經過以上三步,一個請求天氣預報介面的流程是出來了,頁面佈局及其裡面的資料處理還需要花費更多的時間。

注:儘量使用火狐瀏覽器,因為後續ajax的非同步載入中需要web容器,火狐瀏覽器自帶web容器。所以不需要你去再開啟本地的伺服器。

或許我們發現以上的資料並不滿足我們的需要,所以下一節給大家推薦一個數據更詳細的介面。