微信小程序——如何获取url中的数据
如何获取url中的数据
这里举个例子!
当我们需要编辑一个可以点击的图片超链接
这时候结构是这个样子的
- 首先最外层有一个视图层view
- 在view中添加超链接标签
<navigator> </navigator>
- 最后在navigator标签中添加image标签
具体如下:
html页面
<!-- 导航开始 --> <view class="index_cate"> <navigator wx:for="{{cateList}}" wx:key="name" url="/pages/category/index" open-type="switchTab"> <image src="{{item.image_src}}" mode="widthFix" /> </navigator> </view> <!-- 导航结束 -->
解析:
- 在navigator标签中,用for遍历js文件中存储的数组cateList
- 指定key,这里的key必须是数据中不重复的
- 在image标签上绑定遍历出来的图片
js
在这里补充一个知识点——Promise
- promise是一个对象,对象和函数的区别就是对象可以保存状态,函数不可以(闭包除外)
- 并未剥夺函数return的能力,因此无需层层传递callback,进行回调获取数据
- 代码风格,容易理解,便于维护
- 多个异步等待合并便于解决
new Promise( function (resolve, reject) { // 一段耗时的异步操作 resolve('成功') // 数据处理完成 // reject('失败') // 数据处理出错 } ).then( (res) => {console.log(res)}, // 成功 (err) => {console.log(err)} // 失败 )
- resolve作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
reject作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去 - promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
promise状态一经改变,不会再变。 - Promise对象的状态改变,只有两种可能:
从pending变为fulfilled
从pending变为rejected。
这两种情况只要发生,状态就凝固了,不会再变了。
- 补充完这些知识点,我们就可以来编辑一个用于请求的index.js了(/request/index.js)
export const request =(params)=> { return new Promise((resolve,reject)=>{ wx.request({ ...params, // 成功的回调函数 success:(result)=>{ resolve(result); }, // 失败的回调函数 fail:(err)=>{ reject(err); } }); }) }
- 在我们对应的页面下的index.js中,做这几个步骤
- 创建一个接收数据的空数组==>cateList:[]
- 创建一个获取导航数组的方法getCateList()
- 在生命周期函数onLoad中调用该方法
具体操作如下:
Page({ /** * 页面的初始数据 */ data: { //1.导航 数组 cateList:[] }, /** * 生命周期函数--监听页面加载 * 页面开始加载 就会触发 */ onLoad: function (options) { //3. 调用函数,一定要加this!!! this.getCateList(); }, //2.获取 导航 数据 getCateList(){ request({ url:'https://api-hmugo-web.itheima.net/api/public/v1/home/catitems'}) .then(result=>{ this.setData({ cateList:result.data.message }) }) } })
posted on 2021-05-16 15:05 JavaCoderPan 阅读(157) 评论(0) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南