【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码

这篇具有很好参考价值的文章主要介绍了【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是后台交互?

        在小程序中,与后台交互指的是小程序前端与后台服务器之间的数据通信和请求处理过程。通过与后台交互,小程序能够获取服务器端的数据、上传用户数据、发送请求等。

        小程序与后台交互可以实现数据的传输、用户认证、实时消息推送等功能,为用户提供更丰富的体验和功能。

与后台交互可以通过以下方式实现:

  1. 发起网络请求:小程序可以使用网络请求 API(如wx.request)向后台发送 HTTP 请求,来获取后台服务器返回的数据。可以使用 GET、POST、PUT、DELETE 等不同的请求类型来实现不同的操作。
  2. WebSocket:小程序可以使用 WebSocket 技术与服务器建立长连接,实现实时的双向通信。通过 WebSocket,小程序能够及时接收服务器端推送的消息,实现实时更新和交互。
  3. 云函数:小程序提供了云开发平台,其中的云函数可以在后台服务器上执行,用于处理复杂的业务逻辑和数据处理。小程序可以通过调用云函数来与后台进行交互,并获取处理结果。

二、后台数据交互与request封装

1、准备工作

  • 在使用数据交互的时候我们要事先准备好后台的数据方便我们进行调用。
  • 我在这里就不准备后台的数据在这里了

2、后台数据交互

1、在前面的博客里面编写了一个专门用来调用数据后台的一个api.js文件,我们要确保这些数据可以调用到后台,记得把你的后台启动哦!

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序

// 以下是业务服务器API地址
 // 本机开发API地址
 var WxApiRoot = 'http://localhost:8080/wx/';
 
 module.exports = {
   IndexUrl: WxApiRoot + 'home/index' //首页数据接口
 };

2、在你要调用的页面的js里面编写调用的方法,注意记得打印一下你的数据是在那个属性里面,记得在Page的外面调用实用例

// 获取应用实例
const app = getApp()
const api = require("../../config/api")
 //首页会议信息的ajax
    loadMeetingInfos() {
        let that = this;
         wx.request({
             url: api.IndexUrl,
             dataType: 'json',
             success(res) {
                 console.log(res)
                 that.setData({
                     lists: res.data.data.infoList
                 })
             }
         })

    }

然后再定义好的onLoad方法里面调用

    onLoad() {
        if (wx.getUserProfile) {
            this.setData({
                canIUseGetUserProfile: true
            })
        }
        this.loadMeetingInfos();
    }

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序

3、request封装

  1. 在我们项目的里面有个utils/util,js文件,在里面进行一个方法编写。【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序
    
    /**
     * 封装微信的request请求
     */
    function request(url, data = {}, method = "GET") {
        return new Promise(function (resolve, reject) {
            wx.request({
                url: url,
                data: data,
                method: method,
                header: {
                    'Content-Type': 'application/json',
                },
                success: function (res) {
                    if (res.statusCode == 200) {
                        resolve(res.data);//会把进行中改变成已成功
                    } else {
                        reject(res.errMsg);//会把进行中改变成已失败
                    }
                },
                fail: function (err) {
                    reject(err)
                }
            })
        });
    }
    module.exports = {
        formatTime,request
    }
  2. 在你的需要调用的页面进行一个方法的调用进行代码的优化;就以上为例:

    // 获取应用实例
    const app = getApp()
    const api = require("../../config/api")
    const util = require("../../utils/util.js")
     //首页会议信息的ajax
        loadMeetingInfos() {
            let that = this;
    
            util.request(api.IndexUrl).then(res => {
                console.log(res)
                this.setData({
                    lists: res.data.infoList
                })
            }).catch(res => {
                console.log('服器没有开启,使用模拟数据!')
            })
        }
  3. 效果也是一样的,只是进行了一个代码的优化。【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序

这里提供完整的代码

util.js

const formatTime = date => {
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()

    return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatNumber = n => {
    n = n.toString()
    return n[1] ? n : `0${n}`
}

/**
 * 封装微信的request请求
 */
function request(url, data = {}, method = "GET") {
    return new Promise(function (resolve, reject) {
        wx.request({
            url: url,
            data: data,
            method: method,
            header: {
                'Content-Type': 'application/json',
            },
            success: function (res) {
                if (res.statusCode == 200) {
                    resolve(res.data);//会把进行中改变成已成功
                } else {
                    reject(res.errMsg);//会把进行中改变成已失败
                }
            },
            fail: function (err) {
                reject(err)
            }
        })
    });
}
module.exports = {
    formatTime,request
}

index.js

// index.js
// 获取应用实例
const app = getApp()
const api = require("../../config/api")
const util = require("../../utils/util.js")
Page({
    data: {
        imgSrcs: [{
            "img": "https://cdn-we-retail.ym.tencent.com/tsr/home/v2/banner1.png",
            "text": "1"
        },
        "lists": []
    },
    //首页会议信息的ajax
    loadMeetingInfos() {
        let that = this;
        util.request(api.IndexUrl).then(res => {
            console.log(res)
            this.setData({
                lists: res.data.infoList
            })
            console.log(res.data.infoList)
        }).catch(res => {
            console.log('服器没有开启,使用模拟数据!')
        })
    },
    onLoad() {
        if (wx.getUserProfile) {
            this.setData({
                canIUseGetUserProfile: true
            })
        }
        this.loadMeetingInfos();
    }
})

三、wxs的使用

我们可以在微信的开发文档里面可以查看到微信开放文档,wxs的使用。【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序

1、使用wxs步骤

  1. 我们首先新建一个wxs文件在一个位置【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序
  2. 然后在里面定义方法
    function getState(state){}
    module.exports = {
        getState: getState
    };
  3. 在wxml里面调用,src:是你的wxs的路径;module:你后面需要调用的名字,可以随便取。
        <wxs src="/utils/comm.wxs" module="tools" />
  4. 调用

    <text class="list-num">{{tools.getState(item.state)}}</text>

2、完整方法

wxs


function getState(state) {
    // 状态:0取消会议1待审核2驳回3待开4进行中5开启投票6结束会议,默认值为1
    if (state == 0) {
        return '取消会议';
    } else if (state == 1) {
        return '待审核';
    } else if (state == 2) {
        return '驳回';
    } else if (state == 3) {
        return '待开';
    } else if (state == 4) {
        return '进行中';
    } else if (state == 5) {
        return '开启投票';
    } else if (state == 6) {
        return '结束会议';
    }

    return '其它';

}
function getNumber(canyuze, liexize, zhuchiren) {
    var person = canyuze + ',' + liexize + ',' + zhuchiren;
    return person.split(',').length;
}
function formatDate(ts, option) {
    var date = getDate(ts)
    var year = date.getFullYear()
    var month = date.getMonth() + 1
    var day = date.getDate()
    var week = date.getDay()
    var hour = date.getHours()
    var minute = date.getMinutes()
    var second = date.getSeconds()

    //获取 年月日
    if (option == 'YY-MM-DD') return [year, month, day].map(formatNumber).join('-')

    //获取 年月
    if (option == 'YY-MM') return [year, month].map(formatNumber).join('-')

    //获取 年
    if (option == 'YY') return [year].map(formatNumber).toString()

    //获取 月
    if (option == 'MM') return [mont].map(formatNumber).toString()

    //获取 日
    if (option == 'DD') return [day].map(formatNumber).toString()

    //获取 年月日 周一 至 周日
    if (option == 'YY-MM-DD Week') return [year, month, day].map(formatNumber).join('-') + ' ' + getWeek(week)

    //获取 月日 周一 至 周日
    if (option == 'MM-DD Week') return [month, day].map(formatNumber).join('-') + ' ' + getWeek(week)

    //获取 周一 至 周日
    if (option == 'Week') return getWeek(week)

    //获取 时分秒
    if (option == 'hh-mm-ss') return [hour, minute, second].map(formatNumber).join(':')

    //获取 时分
    if (option == 'hh-mm') return [hour, minute].map(formatNumber).join(':')

    //获取 分秒
    if (option == 'mm-dd') return [minute, second].map(formatNumber).join(':')

    //获取 时
    if (option == 'hh') return [hour].map(formatNumber).toString()

    //获取 分
    if (option == 'mm') return [minute].map(formatNumber).toString()

    //获取 秒
    if (option == 'ss') return [second].map(formatNumber).toString()

    //默认 时分秒 年月日
    return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
function formatNumber(n) {
    n = n.toString()
    return n[1] ? n : '0' + n
}

function getWeek(n) {
    switch (n) {
        case 1:
            return '星期一'
        case 2:
            return '星期二'
        case 3:
            return '星期三'
        case 4:
            return '星期四'
        case 5:
            return '星期五'
        case 6:
            return '星期六'
        case 7:
            return '星期日'
    }
}
module.exports = {
    getState: getState,
    getNumber: getNumber,
    formatDate:formatDate
};

index.wxml

<view class="indexbg">
    <swiper autoplay="true" indicator-dots="true" indicator-color="#fff" indicator-active-color="#00f">
        <block wx:for="{{imgSrcs}}" wx:key="text">
            <swiper-item>
                <view>
                    <image src="{{item.img}}" class="swiper-item" />
                </view>
            </swiper-item>
        </block>
    </swiper>
    <wxs src="/utils/comm.wxs" module="tools" />
    <view class="mobi-title">
        <text class="mobi-icon">❤</text>
        <text class="mobi-text">会议信息</text>
    </view>
    <block wx:for-items="{{lists}}" wx:for-item="item" wx:key="item.id" class="bg">
        <view class="list" data-id="{{item.id}}">
            <view class="list-img">
                <image class="video-img" mode="scaleToFill" src="{{item.image != null ? item.image:'/static/persons/8.jpg'}}"></image>
            </view>
            <view class="list-detail">
                <view class="list-title"><text>{{item.title}}</text></view>
                <view class="list-tag">
                    <view class="state">{{tools.getState(item.state)}}</view>
                    <view class="join"><text class="list-num">{{tools.getNumber(item.canyuze,item.liexize,item.zhuzhiren)}}</text>人报名</view>
                </view>
                <view class="list-info"><text>{{item.location}}</text>|<text>{{tools.formatDate(item.starttime,'YY-MM-DD hh-mm-ss')}}</text></view>
            </view>
        </view>
    </block>
    <view class="section">
        <text>到底啦</text>
    </view>
</view>

【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码,# 微信小程序,微信小程序,小程序文章来源地址https://www.toymoban.com/news/detail-721763.html

到了这里,关于【微信小程序】6天精准入门(第5天:利用案例与后台的数据交互)附源码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】6天精准入门(第2天:小程序的视图层、逻辑层、事件系统及页面生命周期)

    框架的视图层由 WXML 与 WXSS 编写, 由组件来进行展示 。 将 逻辑层的数据反映成视图 ,同时将 视图层的事件发送给逻辑层 。 WXML (WeiXin Markup language) 用于描述页面的结构。 WXS (WeiXin Script) 是小程序的一套脚本语言,结合 WXML ,可以构建出 页面的结构 。 WXSS (WeiXin Style Sheet)

    2024年02月08日
    浏览(36)
  • 微信小程序快速入门02(含案例)

    🏡浩泽学编程 :个人主页  🔥 推荐专栏 :《深入浅出SpringBoot》《java项目分享》               《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 讲诉内容:页面导航、页面事件。 页面导航指的是 页面之间的相互跳转 。例如,浏览器中实现页面导

    2024年02月02日
    浏览(41)
  • “编辑微信小程序与后台数据交互与微信小程序wxs的使用“

    在现代移动应用开发中,微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能,与后台数据的交互是至关重要的。同时,微信小程序还提供了一种特殊的脚本语言——wxs,用于增强小程序的业务逻辑处理能力。本篇博客

    2024年02月08日
    浏览(39)
  • 微信小程序-绑定数据并在后台获取它

    如图 遍历列表的过程中需要绑定数据,点击时候需要绑定数据 这里是源代码 这里有几个点注意: 1、代码别写到最外层的view上了,传不到这个button上 data-product-id=“{{item.productId}}” XXXXX 2、如何点击按钮获取当前的 商品id和上下架状态呢? catchtap=“onShelf” 或者 bindtap=“on

    2024年02月21日
    浏览(31)
  • 【微信小程序】后台数据交互于WX文件使用

    目录 一、前期准备 1.1 数据库准备 1.2 后端数据获取接口编写 1.3 前端配置接口 1.4 封装微信的request请求   二、WXS文件的使用 2.1 WXS简介 2.2 WXS使用   三、后台数据交互完整代码 3.1 WXML 3.2 JS 3.3 WXSS 效果图  创建数据库: 注意: 字符集选择 utf8mb4 ,因为可能用存储用户信息,

    2024年02月08日
    浏览(35)
  • 微信小程序+SpringBoot接入后台服务,接口数据来自后端

    文章底部有个人公众号:小兔教你学编程。主要目的是方便阅读。主要分享一些前后端初中级知识、开发实战案例、问题解决等知识。        前两天开发了一个微信小程序项目,只不过接口数据是自己设置的假数据。然后我就想将这些假数据替换掉。这些数据来自接口,

    2024年02月12日
    浏览(45)
  • 微信小程序使用PHP调用后台mysql数据库-小白版

    1.域名备案 首先,需要有一个域名,且这个域名是已经备过案的。(如果小程序不发布正式版只用于线上测试则不影响) 2.后台服务器 其次,需要一个服务器,我这里使用的是宝塔面板,对小白很友好,很方便操作。 也可以买个虚拟主机,一个月几块钱左右,很适合小白弄

    2024年04月14日
    浏览(36)
  • 巧用回调函数解决微信小程序与后台数据交互出现的异步问题

            微信小程序端需要发送一个包含文字与图片的表单数据给后端,我一开始的思路是 先 上传图片得到临时的URL, 后 执行POST请求将表单数据发送给后端,但后端只能获取到文字,而图片URL却始终获取不到。         注意看我上面的思路, 一先一后 ,无形中将两

    2024年02月16日
    浏览(36)
  • 关于微信小程序与Java后台交互数据中中文乱码问题的讨论

    如果小程序端发起的请求参数中含有中文,直接发送到后台会显示乱码,需要在header中设置UTF-8编码 这样后台接收到的中文就能解析正常了 为了便于测试,后台接口简化如下: 结果小程序端显示的用户名为“寮犱笁”。 起初怀疑后台返回的编码格式不对,网上说对于Spring

    2024年02月09日
    浏览(31)
  • 基于微信小程序的农产品电商平台精准营销模式创新研究

    目 前在农产品销售过程出现一个非常严重的问题─滞销, 我们时不时的能在新闻报道看到某地区农产品大量上市却少有客商前来收购, 甚至一度出现大量新鲜的农产品烂在地头无人问津, 被当作垃圾一样扔掉。 客商在收购农产品过程中, 将产品的收购价格压的极低, 随着

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包