request簡介
wx.request用于發(fā)起HTTPS網(wǎng)絡(luò)請求默刚,其常用的參數(shù)有url(接口地址)翻具、data(請求的參數(shù))轨奄、header(設(shè)置請求的header)裳仆、method(http請求方法)溉箕、success(接口調(diào)用成功的回調(diào)函數(shù))晦墙、fail(接口調(diào)用失敗的回調(diào)函數(shù))、complete(接口調(diào)用結(jié)束的回調(diào)函數(shù)肴茄,調(diào)用成功或失敗都會執(zhí)行)晌畅。
request事例
wx.request({
url: 'https://........' ,
data: {
pageindex: that.data.pageindex//當(dāng)前頁
},
header: {
"content-type": "application/x-www-form-urlencoded"
},
method: 'POST',
success: function (res) {
console.log("success:" + res);
try {
if (res.data) {
//定義一個臨時數(shù)據(jù)字典存儲訪問的網(wǎng)頁數(shù)據(jù)
var tempResult = res.data.NEWS[1];
console.log("ssss" + tempResult);
var tempArrayInfo;
if (that.data.pageindex == 1) { //如果是重新從第一頁開始請求,則清空之前保存的數(shù)據(jù)
tempArrayInfo = [];
} else {
tempArrayInfo = that.data.ArrNews; //沒有更改篩選條件寡痰,即不是從第一頁開始請求抗楔,則將之前已經(jīng)獲取到的數(shù)據(jù)賦值給tempArrayInfo,以便解析后將新的數(shù)據(jù)加到tempArrayInfo中(后)拦坠。
}
if (tempResult.length < 10) {
that.setData({
isLastPage: true
});
}
for (var i = 0; i < tempResult.length; i++) {
var infoDict = tempResult[i]; //每一條紀(jì)錄
var Title = infoDict.title;
var SourceName = infoDict.source;
var DataTime = infoDict.time;
var Content = infoDict.article.content;
var tempDict = {};
tempDict["Title"] = Title; //定義左邊鍵名连躏,右邊對應(yīng)的鍵值
tempDict["SourceName"] = SourceName;
tempDict["DataTime"] = DataTime;
tempDict["Content"] = Content;
tempArrayInfo.push(tempDict);
}
that.setData({
ArrNews: tempArrayInfo, //將臨時數(shù)組賦給這個arrNews空數(shù)組,則可以進行“item.鍵名”的使用
pageindex: that.data.pageindex + 1, //加載完一頁數(shù)據(jù)下拉自動加載下一頁數(shù)據(jù)
})
var arrContent = that.data.ArrNews;
wx.setStorageSync('content', arrContent); //設(shè)置緩存
} else { }
}
catch (e) {
}
wx.hideLoading();
},
fail: function (err) {
console.log("error:" + err);
wx.hideLoading();
}
});
}
代碼解釋:
url: 'https://........' ,
data: {
pageindex: that.data.pageindex//當(dāng)前頁
}
第一步是獲取數(shù)據(jù)
使用url獲取接口中返回的數(shù)據(jù)贞滨,同時將小程序js文件中定義的pageindex作為參數(shù)添加在url中入热。獲取的數(shù)據(jù),在success:function(res)
中
第二步是解析數(shù)據(jù)
這里需要兩個數(shù)據(jù)字典tempResult
晓铆、 tempDict
和兩個數(shù)組ArrNews
(定義在data中的全局變量)和 tempArrayInfo
勺良。
其中tempResult
的作用是將success:function(res)
中的數(shù)據(jù)暫時存儲起來,并進行解析骄噪,代碼如下:var tempResult = res.data.NEWS[1];
尚困。
tempArrayInfo
的作用是存儲已經(jīng)加載進去的數(shù)據(jù),相當(dāng)于一個中間存儲變量链蕊,同時頁面下拉刷新時事甜,將之前加載的數(shù)據(jù)谬泌,繼續(xù)加載到頁面中。代碼如下:
var tempArrayInfo;
if (that.data.pageindex == 1) { //如果是重新從第一頁開始請求逻谦,則清空之前保存的數(shù)據(jù)
tempArrayInfo = [];
} else {
tempArrayInfo = that.data.ArrNews; //沒有更改篩選條件掌实,即不是從第一頁開始請求,則將之前已經(jīng)獲取到的數(shù)據(jù)賦值給tempArrayInfo跨跨,以便解析后將新的數(shù)據(jù)加到tempArrayInfo中(后)潮峦。
}
tempDict
的作用是將tempResult
中解析出的每一個對象的屬性,進行鍵名和鍵值的設(shè)置勇婴,設(shè)置之后忱嘹,我們可以通過item.鍵名,來獲取鍵值耕渴,然后將這些處理好的數(shù)據(jù)拘悦,放入tempArrayInfo
中。代碼如下:
var tempDict = {};
tempDict["Title"] = Title; //定義左邊鍵名橱脸,右邊對應(yīng)的鍵值
tempDict["SourceName"] = SourceName;
tempDict["DataTime"] = DataTime;
tempDict["Content"] = Content;
tempArrayInfo.push(tempDict);
ArrNews
是一個全局變量础米,是最早存儲我們解析好的數(shù)據(jù)的數(shù)組,代碼如下:
that.setData({
ArrNews: tempArrayInfo, //將臨時數(shù)組賦給這個arrNews空數(shù)組添诉,則可以進行“item.鍵名”的使用
pageindex: that.data.pageindex + 1, //加載完一頁數(shù)據(jù)下拉自動加載下一頁數(shù)據(jù)
})
通過以上兩個步驟屁桑,就實現(xiàn)了將接口中的數(shù)據(jù),讀取栏赴、解析出來蘑斧。