麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

微信小程序之網(wǎng)絡(luò)請(qǐng)求簡(jiǎn)單封裝實(shí)例詳解

2019-11-19 16:13:47
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

微信小程序之網(wǎng)絡(luò)請(qǐng)求簡(jiǎn)單封裝實(shí)例詳解

在微信小程序中實(shí)現(xiàn)網(wǎng)絡(luò)請(qǐng)求相對(duì)于Android來(lái)說(shuō)感覺(jué)簡(jiǎn)單很多,我們只需要使用其提供的API就可以解決網(wǎng)絡(luò)請(qǐng)求問(wèn)題。

  • 普通HTTPS請(qǐng)求(wx.request)
  • 上傳文件(wx.uploadFile)
  • 下載文件(wx.downloadFile)
  • WebSocket通信(wx.connectSocket)

為了數(shù)據(jù)安全,微信小程序網(wǎng)絡(luò)請(qǐng)求只支持https,當(dāng)然各個(gè)參數(shù)的含義就不在細(xì)說(shuō),不熟悉的話可以;可以去閱讀官方文檔的網(wǎng)絡(luò)請(qǐng)求api,當(dāng)我們使用request時(shí)header的content-typ默認(rèn)是application/json,在文檔中指出method 的value必須是大寫,不過(guò)經(jīng)過(guò)測(cè)試,小寫也能請(qǐng)求成功。request默認(rèn)的超時(shí)時(shí)間是60s,如果我們想自定義超時(shí)時(shí)間,我們可以在app.json中加入下面代碼片段,分別設(shè)置request,socket,和上傳文件及下載文件的超時(shí)時(shí)間。

"networkTimeout": {  "request": 5000,  "connectSocket": 5000,  "uploadFile": 5000,  "downloadFile": 5000 }

設(shè)置過(guò)超時(shí)時(shí)間,我們就開始封裝網(wǎng)絡(luò)請(qǐng)求,平時(shí)我們所接觸的網(wǎng)絡(luò)請(qǐng)求,一般會(huì)分為兩類,一類是在后臺(tái)運(yùn)行的,沒(méi)有加載對(duì)話框提示,另一種就是有提示,如提示正在加載數(shù)據(jù),,那么我們就以此為線索來(lái)進(jìn)行封裝。先創(chuàng)建一個(gè)network的網(wǎng)絡(luò)請(qǐng)求工具類,然后

// 展示進(jìn)度條的網(wǎng)絡(luò)請(qǐng)求// url:網(wǎng)絡(luò)請(qǐng)求的url// params:請(qǐng)求參數(shù)// message:進(jìn)度條的提示信息// success:成功的回調(diào)函數(shù)// fail:失敗的回調(diào)function requestLoading(url, params, message, success, fail) { console.log(params)  wx.showLoading({   title: message,  }) wx.request({  url: url,  data: params,  header: {   'content-type': 'application/x-www-form-urlencoded'  },  method: 'post',  success: function (res) {   //console.log(res.data)    wx.hideLoading()   if (res.statusCode == 200) {    success(res.data)   } else {    fail()   }  },  fail: function (res) {    wx.hideLoading()    fail()  },  complete: function (res) {  }, })}

上面函數(shù)很好理解,參數(shù)的含義已在代碼中解釋,在網(wǎng)絡(luò)請(qǐng)求開始前,先展示Loading對(duì)話框,提示用戶當(dāng)前網(wǎng)絡(luò)正在請(qǐng)求數(shù)據(jù),當(dāng)網(wǎng)絡(luò)請(qǐng)求成功或者失敗后調(diào)用wx.hideLoading()取消提示框的展示。在api中還提供了wx.showNavigationBarLoading()用于顯示當(dāng)前頁(yè)面的導(dǎo)航條加載動(dòng)畫,那么如果我們想展示這個(gè)動(dòng)畫可以在requestLoading執(zhí)行開始調(diào)用wx.showNavigationBarLoading(),然后在網(wǎng)絡(luò)請(qǐng)求成功或者失敗后調(diào)用wx.hideNavigationBarLoading()隱藏導(dǎo)航欄加載動(dòng)畫。

當(dāng)網(wǎng)絡(luò)請(qǐng)求成功并且狀態(tài)碼為200時(shí),將請(qǐng)求到的數(shù)據(jù)回調(diào)通過(guò)success(res.data)回調(diào)給我們的方法,在上面我們沒(méi)有對(duì)失敗原因進(jìn)行細(xì)分,當(dāng)然你也可以給失敗回調(diào)加個(gè)參數(shù),用于提示用戶失敗的原因,如res.statusCode ==500時(shí)提示服務(wù)器內(nèi)部錯(cuò)誤,res.statusCode ==-1時(shí)提示請(qǐng)檢查網(wǎng)絡(luò),res.statusCode ==404,找不到地址等等。

然后我們?cè)趧?chuàng)建一個(gè)不顯示對(duì)話框,用戶后臺(tái)請(qǐng)求數(shù)據(jù)的請(qǐng)求函數(shù),為了少寫代碼,我們共用上面的函數(shù),如下

//不顯示對(duì)話框的請(qǐng)求function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail)}

我們看到我們最終還是調(diào)用的requestLoading,那么我們可以在該函數(shù)作下判斷,如果提示信息message==''就不顯示對(duì)話框。

最終的代碼

function request(url, params, success, fail) { this.requestLoading(url, params, "", success, fail)}// 展示進(jìn)度條的網(wǎng)絡(luò)請(qǐng)求// url:網(wǎng)絡(luò)請(qǐng)求的url// params:請(qǐng)求參數(shù)// message:進(jìn)度條的提示信息// success:成功的回調(diào)函數(shù)// fail:失敗的回調(diào)function requestLoading(url, params, message, success, fail) { console.log(params) wx.showNavigationBarLoading() if (message != "") {  wx.showLoading({   title: message,  }) } wx.request({  url: url,  data: params,  header: {   //'Content-Type': 'application/json'   'content-type': 'application/x-www-form-urlencoded'  },  method: 'post',  success: function (res) {   //console.log(res.data)   wx.hideNavigationBarLoading()   if (message != "") {    wx.hideLoading()   }   if (res.statusCode == 200) {    success(res.data)   } else {    fail()   }  },  fail: function (res) {   wx.hideNavigationBarLoading()   if (message != "") {    wx.hideLoading()   }   fail()  },  complete: function (res) {  }, })}module.exports = { request: request, requestLoading: requestLoading}

使用就很簡(jiǎn)單了,如下

//路徑根據(jù)自己項(xiàng)目路徑修改var network = require("/utils/network.js")getData:function(){  network.requestLoading(URL.MY_SCORE, that.data.params, '正在加載數(shù)據(jù)', function (res) {  //res就是我們請(qǐng)求接口返回的數(shù)據(jù)   console.log(res)  }, function () {   wx.showToast({    title: '加載數(shù)據(jù)失敗',   })  })}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 请播放一级毛片 | 成人毛片免费 | 圆产精品久久久久久久久久久 | 成人短视频在线播放 | 黄色毛片免费看 | 亚洲情av | 福利在线免费 | 国内精品久久久久久2021浪潮 | 线观看免费完整aaa 欧美在线一级 | 国产精品视频一区二区三区综合 | 欧美日韩大片在线观看 | 日本中文一级片 | 精品久久久久久中文字幕 | 日本成人午夜视频 | 色视频在线 | 在线免费亚洲 | 日日草夜夜 | 久久久一区二区三区视频 | 永久久久 | www.91tv| 黄色一级片免费观看 | 男女羞羞视频 | 久久久一区二区精品 | 成人免费在线观看视频 | 色视频一区二区 | 精品人伦一区二区三区蜜桃网站 | 男女无套免费视频 | 男女羞羞的视频 | 亚洲小视频在线 | 日韩 综合 | 91av久久 | 色综合777| 91精品国产91久久久久久丝袜 | 中文字幕在线播放一区 | 狠狠干天天操 | 国产激爽大片在线播放 | 涩涩激情网 | 51色视频| 国产在线精品区 | 国产毛片毛片毛片 | 成人视屏在线 |