【微信小程序学习】前后端交互
1、语法:wx.request()
onLoad: function (options) { wx.request({ url: http://localhost:3000/banner, data:{type:2}, success:(res)=>{ console.log(请求成功:,res) }, fail:(err)=>{ console.log(请求失败:, err) } }) },
2、注意点:
(1)协议必须是https协议
(2)一个接口最多配置20个域名
(3)并发限制上限时10个
(4)开发过程中设置不校验合法域名:开发工具--->右上角详情--->本地设置--->不校验
3、发送ajax请求
(1)封装功能函数
- 功能点要明确
- 函数内部应该保留固定代码(静态的)
- 将动态的数据抽取成形参,由使用者根据自己的情况动态的传入实参
- 一个良好的功能函数应该设置形参的默认值
(2)封装功能组件
- 功能点要明确
- 组件内部保留静态的页码
- 将动态的数据抽取成props参数,由使用者根据自身的情况以标签属性的形式动态传入props数据
- 一个良好的组件应该设置组件的必要性及数据类型
4、具体操作
新建文件夹utils
request.js
//发送ajax请求 import config from./config.js export default (url,data={},method=GET)=>{ return new Promise((resolve,reject)=>{ wx.request({ url:config.host + url, data, method, success: (res) => { console.log(请求成功:, res); resolve(res.data); }, fail: (err) => { console.log(请求失败:, err); reject(err); } }) }) }
config.js
export default { host:http://localhost:3000 }
index.js
onLoad: async function (options) { let bannerListData = await request(/banner,{type:2}); this.setData({ bannerList:bannerListData.banners }) //获取推荐歌单数据 let recommendListData = await request(/personalized,{limit:10}).then((res)=>{ this.setData({ recommendList: res.result }) }) //获取排行榜的数据 // 需求分析:1、需要根据idx的值获取对应的数据2、idx的取值范围是0-20 我们需要0-4 // 3、需要发送5次请求 let index = 0; let resultArr=[]; while(index<5){ let topListData = await request(/top/list, { idx: index++ }); let topListItem = {name: topListData.playlist.name, tracks:topListData.playlist.tracks.slice(0,3)}; resultArr.push(topListItem); //不需要等待五次请求全部结束才更新,用户体验好 this.setData({ topList:resultArr }) } //更新topList的状态值,此处更新会导致请求过程中页面长时间白屏,用户体验差 // this.setData({ // topList:resultArr // }) },
可以在AppData中获取到数据
上一篇:
uniapp开发微信小程序-2.页面制作