微信小程序?qū)W習(xí)——快遞信息查詢

前言

根據(jù)微信公眾平臺(tái)提供的官方文檔小程序注冊(cè)開發(fā)者工具的使用仇箱,可以注冊(cè)微信公眾平臺(tái),快速創(chuàng)建項(xiàng)目东羹。文檔很詳細(xì)剂桥,在此就略過項(xiàng)目創(chuàng)建部分啦~

剛?cè)腴T小程序,本項(xiàng)目是學(xué)習(xí)階段寫的小demo属提。GitHub項(xiàng)目地址

小程序的功能是:輸入快遞公司和單號(hào)权逗,查詢物流信息。涉及到一些小程序提供的表單組件冤议,主要是為了學(xué)習(xí)網(wǎng)絡(luò)請(qǐng)求接口的使用斟薇。
最終效果如下:查詢主頁面和查詢結(jié)果詳情頁

主頁面

詳情頁

目錄結(jié)構(gòu)

采用開發(fā)者工具提供的“建立普通快速啟動(dòng)模板”新建項(xiàng)目。

  • index為輸入查詢信息的主頁面
  • detail為顯示查詢結(jié)果詳情頁
目錄結(jié)構(gòu)

一恕酸、 查詢主頁面

包括快遞公司選擇奔垦、快遞單號(hào)和查詢?nèi)糠?/p>

主頁面未輸入信息時(shí)

主頁面輸入信息時(shí)

1.快遞公司選擇

快遞公司選擇框

快遞公司完成

使用微信小程序-表單組件-picker,實(shí)現(xiàn)從底部彈起的滾動(dòng)選擇器尸疆,選擇不同快遞公司椿猎。

參考資料:微信小程序官方文檔picker介紹
結(jié)構(gòu)(index.wxml)
<!--index.wxml-->
  <view class="company">
    <view class="title">快遞公司:</view>
    <picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}" range-key="name">
      <view class="picker" style="line-height: 50px;height: 50px;background: #fff;padding-left: 20px;font-size:18px;">
       當(dāng)前選擇:{{array[index]['name']}}
      </view>
    </picker>
  </view>
  • picker的range屬性指定數(shù)組array(該數(shù)組為快遞公司信息,在index.js中定義)
  • 當(dāng) range 是一個(gè) Object Array 時(shí)寿弱,通過picker的range-key屬性犯眠,指定 Object 中 key 的值作為選擇器顯示內(nèi)容(在本例中name用于存儲(chǔ)快遞公司名字,在index.js中定義)
  • value屬性中index無需在index.js中定義症革,表示選擇了range對(duì)應(yīng)項(xiàng)的第幾個(gè)筐咧,也就是range指定數(shù)組的下標(biāo)(從0開始)
  • bindchange用于綁定事件,bindPickerChange為事件處理函數(shù)噪矛,在index.js中定義
js(index.js)
//index.js

data: {
    array: [
      {
        'id':'yunda',
        'name':'韻達(dá)'
      },
      {
        'id':'shentong',
        'name':'申通'
      },
      {
        'id':'ems',
        'name':'EMS'
      },
      {
        'id':'shunfeng',
        'name':'順豐'
      },
      {
        'id':'zhongtong',
        'name':'中通'
      }
    ],
    compangy_id:''
},
// 事件處理函數(shù):公司選擇
bindPickerChange: function(e) {
    //獲取當(dāng)前用戶選擇項(xiàng)量蕊,對(duì)應(yīng)數(shù)組下標(biāo)
    const val = e.detail.value;
    this.setData({
      index: val,
      compangy_id:this.data.array[val]['id']
    });
},
  • data中注冊(cè)結(jié)構(gòu)中用到的數(shù)據(jù),快遞公司信息數(shù)組array艇挨,定義compangy_id
  • bindPickerChange事件處理函數(shù)通過setData更新數(shù)據(jù)残炮,包括當(dāng)前用戶選擇項(xiàng)的對(duì)應(yīng)數(shù)組下標(biāo)index,compangy_id存儲(chǔ)該項(xiàng)對(duì)應(yīng)array中的id字段缩滨。(這個(gè)信息用于查詢接口使用势就,在查詢部分再詳細(xì)說明)

2.快遞單號(hào)

單號(hào)輸入數(shù)字鍵盤

使用微信小程序-表單組件-input,用于輸入快遞單號(hào)泉瞻。

參考資料:微信小程序官方文檔input介紹
結(jié)構(gòu)(index.wxml)
<!--index.wxml-->
  <view class="caseid">
    <view class="title">快遞單號(hào):</view>
    <input type="number" placeholder="請(qǐng)輸入快遞單號(hào)" bindinput="bindKeyInput" style="line-height: 50px;height: 50px;background: #fff;padding-left: 20px;font-size:18px;"/>
  </view>
  • type屬性定義為number,可以空時(shí)顯示數(shù)字輸入鍵盤
  • bindKeyInput事件處理函數(shù)用于獲取用戶輸入的單號(hào)苞冯,在index.js中定義
js(index.js)
  // 輸入單號(hào)
  bindKeyInput: function (e) {
    this.setData({
      inputValue: e.detail.value
    })
  },

inputVaue同樣需要在data中注冊(cè)(與存儲(chǔ)快遞公司用到變量compangy_id類似)袖牙,用該變量存儲(chǔ)用戶輸入的表單信息

3.查詢按鈕

使用微信小程序-表單組件-button。

參考資料:微信小程序官方文檔button介紹
結(jié)構(gòu)(index.wxml)
<button type="primary" size="{{primarySize}}"
        bindtap="bindquery" style="margin-top:20px;"> 查詢 </button>
  • type="primary"用于定義按鈕樣式類型舅锄,組件提供幾種樣式可供選擇
  • size用于定義按鈕大小鞭达,有效值為default和mini,默認(rèn)為default
  • bindquery綁定查詢事件
js(index.js)
  // 點(diǎn)擊查詢
  bindquery:function (e) {
    var data={
      'type':this.data.compangy_id,
      'postid':this.data.inputValue
    };
    wx.navigateTo({
      url: '../../pages/detail/detail?type='+data.type+'&postid='+data.postid
    })
  }

這里用到了一個(gè)公開的物流接口:

http://www.kuaidi100.com/query?type=快遞公司代號(hào)&postid=快遞單號(hào)

ps 快遞公司代號(hào):

申通=”shentong” EMS=”ems” 順豐=”shunfeng” 圓通=”yuantong” 中通=”zhongtong” 韻達(dá)=”yunda” 天天=”tiantian” 匯通=”huitongkuaidi” 全峰=”quanfengkuaidi” 德邦=”debangwuliu” 宅急送=”zhaijisong”

參考資料: 各種JSON API免費(fèi)接口
  • 通過上述快遞公司和快遞單號(hào)部分,可以獲取接口需要的type和postid
  • wx.navigateTo是官方提供的API皇忿,保留當(dāng)前頁面碉怔,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個(gè)頁面,使用wx.navigateBack可以返回到原頁面禁添。這里用于跳轉(zhuǎn)到快遞信息展示詳情頁detail,并將查詢快遞信息所需的參數(shù)傳遞到詳情頁撮胧。
參考資料: 微信小程序wx.navigateTo的API文檔

二、 快遞信息詳情頁

查詢成功和失敗時(shí)效果如下:

查詢成功詳情頁

查詢失敗詳情頁
結(jié)構(gòu)(detail.wxml)
<!--detail.wxml-->
<view class="container">
    <!--快遞信息模板 begin-->
        <template name="items">
            <view class="row">
                <view class="time">
                    {{time}}
                </view>
                <view class="icon"></view>
                <view class="infos">
                    {{context}}
                </view>
            </view>
        </template>
    <!--快遞信息模板 end-->
    <!--查詢成功時(shí) begin-->
        <view wx:if="{{haslist}}">
            <!--循環(huán)輸出列表 begin-->
            <view class="mainline"></view>
            <block wx:for="{{list}}" wx:key="*this" class="scroll-view-item bc_green">
              <template is="items" data="{{...item}}" />
            </block>
            <!--循環(huán)輸出列表 end-->
        </view>
    <!--查詢成功時(shí) end-->
    <!--查詢失敗時(shí)-->
    <view wx:else style="padding: 20px;">{{errmsg}}</view>
</view>
  • 快遞信息模板老翘,為一條快遞信息的模板芹啥,包括時(shí)間和快遞詳情
  • wx:if和wx:for控制循環(huán)輸出信息
  • 其中在列表循環(huán)是,如不提供 wx:key铺峭,會(huì)報(bào)一個(gè) warning墓怀, 如果明確知道該列表是靜態(tài),或者不必關(guān)注其順序卫键,可以選擇忽略傀履。詳細(xì)使用見如下參考資料的wx:for
參考資料:

微信小程序官方文檔列表渲染wx:for

微信小程序官方文檔條件渲染wx:if

js(detail.js)
  data: {
    list:[],
    haslist:false,
    errmsg:''
  },
  //事件處理函數(shù)
  onLoad:function (options) {
    var that = this;
    wx.request( {
      url: 'https://www.kuaidi100.com/query',
      data: options,
      header: {
        'Content-Type': 'application/json'
      },
      success: function( res ) {
        // console.log( res.data );
        var msg=res.data.message;
        var data=res.data.data;
        if(msg==="ok"){
            that.setData({
              list: data,
              haslist:true
            });
            // console.log(that.data.list);
        }else{
            that.setData({
                errmsg:'請(qǐng)正確輸入快遞公司和單號(hào)'
            });
        }
      }
    })
  }
  • data中l(wèi)ist用于存儲(chǔ)快遞信息數(shù)據(jù),haslist用于結(jié)構(gòu)用中wx:if的控制莉炉,errmsg為查詢失敗時(shí)顯示的信息钓账。
  • 在主頁面查詢按鈕的點(diǎn)擊事件中采用了wx.navigateTo傳遞快遞查詢的參數(shù)。(物流接口:http://www.kuaidi100.com/query?type=快遞公司代號(hào)&postid=快遞單號(hào))絮宁。 在詳情頁面中梆暮,只需在onLoad(生命周期函數(shù)--監(jiān)聽頁面加載)中用options接受參數(shù)即可。
  • 用wx.request發(fā)起網(wǎng)絡(luò)請(qǐng)求绍昂。
參考資料:微信小程序官方文檔wx.request發(fā)起網(wǎng)絡(luò)請(qǐng)求
  • 注意: 在創(chuàng)建項(xiàng)目時(shí)啦粹,填寫了AppID,發(fā)起網(wǎng)絡(luò)請(qǐng)求需要在開發(fā)設(shè)置中配置服務(wù)器域名,如下圖所示窘游。
  • 開發(fā)者工具-創(chuàng)建小程序

    i微信公眾平臺(tái)-設(shè)置
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唠椭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子忍饰,更是在濱河造成了極大的恐慌贪嫂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喘批,死亡現(xiàn)場離奇詭異特咆,居然都是意外死亡腌逢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來憋他,“玉大人,你說我怎么就攤上這事糠亩∩喙罚” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵俱两,是天一觀的道長饱狂。 經(jīng)常有香客問我,道長宪彩,這世上最難降的妖魔是什么休讳? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮尿孔,結(jié)果婚禮上俊柔,老公的妹妹穿的比我還像新娘。我一直安慰自己活合,他們只是感情好雏婶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著白指,像睡著了一般留晚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上告嘲,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天错维,我揣著相機(jī)與錄音,去河邊找鬼橄唬。 笑死需五,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的轧坎。 我是一名探鬼主播宏邮,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼缸血!你這毒婦竟也來了蜜氨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤捎泻,失蹤者是張志新(化名)和其女友劉穎飒炎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笆豁,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡郎汪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年赤赊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞赢。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抛计,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出照筑,到底是詐尸還是另有隱情吹截,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布凝危,位于F島的核電站波俄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛾默。R本人自食惡果不足惜懦铺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望支鸡。 院中可真熱鬧冬念,春花似錦、人聲如沸苍匆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浸踩。三九已至叔汁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間检碗,已是汗流浹背据块。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留折剃,地道東北人另假。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像怕犁,于是被迫代替她去往敵國和親边篮。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容