小程序与后端交互

目录

1 后端交互时序图 

2 不校验域名

3 点击小程序的功能

4 request请求

 5 返回结果

 6 更新视图层

 7 使用案例

 7.1 WXML文件

7.2 WXSS文件

7.3 JS文件

8 GitHub地址

 


1 后端交互时序图 

2 不校验域名

如果我们没有备案好的域名的话,在开发过程中我们可开启不校验域名模式,等项目开发好后再到小程序后台配置合法的域名,

开启不校验域名的操作如下图所示。

3 点击小程序的功能

这里与小程序的具体业务有关,我们可以自己根据需求来添加,比如用户点击了某个按钮或者提交了某个表单之类的事件。

4 request请求

request请求,就是根据用户在小程序上提交的事件来向后端服务器发起请求,在小程序中用来发起http请求的可以使用wx.request()来完成。

注:在另一篇文章有讲解,这里就不复述了,链接

 5 返回结果

后端服务器根据请求的类型向小程序返回请求结果,一般在开发的过程中,我们会以JSON作为返回结果的数据格式。

 6 更新视图层

wx.request()success回调函数里,我们可以使用this.setData()将从后端服务器上返回的结果更新到视图层(WXML)

这里需要注意的一点:

直接在success回调函数里使用this.setData()是会报错的,因为此时的this指针指向的是success回调函数,而不是Page(),所以我们可以在发起wx.request之前,把this赋值给一个新的变量,如下图所示。

 7 使用案例

注:笔者这里使用的是一个开放的图片推荐的API来作为后端处理请求

API地址:https://api.apiopen.top/getImages

请求方式:POST

请求数据:page(字符串型),count(字符串型)

说明:通过小程序的刷新按钮来向后端服务器发起刷新图片的请求后端接受到刷新请求后向小程序的JS文件返回请求结果JS文件正确接收到结果后再将新的内容通过this.setData()更新到视图层(WXML),该案例的效果如下图所示。

 7.1 WXML文件

<view class="image_box">
  <view class="image_list" wx:for="{{data}}">
    <image src="{{item.img}}"  mode="aspectFill" binderror="imgerror">
    </image>
  </view>
</view>
<button bindtap='getImages' type='primary'>刷新</button>

7.2 WXSS文件

.image_box {
  width: 100%;
  height: 480rpx;
  overflow: hidden;
  padding: 60rpx;
  white-space: nowrap;
}

.image_list {
  width: 800rpx;
  height: auto;
  display: inline-block;
}

image {
  border-radius: 40rpx;
}

7.3 JS文件

//获取应用实例
const app = getApp()
Page({
  data: {},
  // 监听页面加载
  onLoad: function () {
    this.getImages()
  },
  // 不能正确加载的图片再次请求加载
  imgerror: function (res) {
    wx.showToast({
      title: '稍等',
      icon: 'loading',
      duration: 2000
    })
    this.getImages()
  },
  // 通过API请求图片资源
  getImages() {
    var seft = this
    wx.request({
      // 向后发起请求的地址
      url: 'https://api.apiopen.top/getImages',
      // 请求的数据
      data: {
        page: '',
        count: '1'
      },
      // 设置请求头,GET请求的话可以省略此项
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      // 请求的方式
      method: 'POST',
      dataType: 'json',
      responseType: 'text',
      // 请求成功的回调函数
      success: function (res) {
        var data = res.data.result
      // 将请求的结果更新到视图层
        seft.setData({
          data: data
        });
      }
    })
  }
})

8 GitHub地址

https://github.com/lwqbrell/wechat-images

  • 11
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值