微信小程序页面交互

news2024/10/7 8:24:38

目录

案例:登陆——>跳转到个人中心(并展示个人信息)

登陆流程

一、前端页面标签

二、收集前端页面数据

 三、前端验证账号密码是否合规

四、根据账号密码向后端发送请求

1.请求工具

2.请求调用

3.根据回调得到的状态进行处理

五.成功调转后从静态路由获取刚才得到的数据

1.声明存储变量

2.进入页面后加载数据

六、前端展示

总结:


案例:登陆——>跳转到个人中心(并展示个人信息)

登陆流程

        1.收集表单数据项

        2.前端验证

        3.后端验

一、前端页面标签

    <view class="input-content">
      <view class="input-item">
        <text class="tit">手机号码</text>
        <input  type="text" placeholder="请输入手机号码" id="phone" bindinput="handleInput"/>
      </view>
      <view class="input-item">
        <text class="tit">密码</text>
        <input type="password"  placeholder="请输入密码" id="password" bindinput="handleInput"/>
      </view>
    </view>

提醒:因为都是用的bindinput="handleInput",所以要用到唯一标识符id

二、收集前端页面数据

设置变量

  data: {
    phone: "",
    password: ""
  },

收集并存储

  // 表单项内容发生改变
  handleInput(event) {
    let type = event.currentTarget.id;//取值有两种
    this.setData({
      [type]: event.detail.value
    })
  },

 三、前端验证账号密码是否合规

   if (!phone) {
      wx.showToast({
        title: '手机不能为空',
        icon: "none"
      })
      return;
    }
    //正则表示式子
    let phoneReg = /^1(3|4|5|6|7|8|9)\d{9}$/;
    if (!phoneReg.test(phone)) {
      wx.showToast({
        title: '手机号格式错误',
        icon: "none",
      })
      return;
    }
    if (!password) {
      wx.showToast({
        title: '密码不能为空',
        icon: "none"
      })
      return;
    }

四、根据账号密码向后端发送请求

1.请求工具

import config from './config'
export default (url, data = {}, method = 'GET') => {
  return new Promise((resolve, reject) => {
    //1.new Promise 初始话Promise实例的状态为pending
    wx.request({
      url: config.host + url,
      data,
      method,
      success: (res) => {
        resolve(res.data)
        // 修改promise的状态为成功状态
      },
      fail: (err) => {
        reject(err)
        // 修改promise的状态为reject状态
      }
    })
  })
}

2.请求调用

    在由于使用await,login(方法前面应该加上async)

    //后端验证
    let result = await request('/login/cellphone', { phone, password })
    console.log("result", result)

3.根据回调得到的状态进行处理

if (result.code === 200) {
      wx.showToast({
        title: '登陆成功',
      });
      // 返回之前,将用户的存储信息返回到本地,转成json对象
      wx.setStorageSync('userInfo', JSON.stringify(result.profile))
      //跳转到个人中心
      wx.reLaunch({
        url: '/pages/personal/personal'
      })
    } else if (result.code === 400) {
      wx.showToast({
        title: '手机号错误',
        icon: "none"
      })
    } else if (result.code === 502) {
      wx.showToast({
        title: '密码错误',
        icon: "none"
      })
    } else {
      wx.showToast({
        title: '登陆失败,请重新登陆',
        icon: "none"
      })
    }

五.成功调转后从静态路由获取刚才得到的数据

1.声明存储变量

2.进入页面后加载数据

onLoad(options) {
    // 读取登陆的信息
    let userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.setData({
        userInfo :JSON.parse(userInfo)
      })
    }
  },

六、前端展示

 

 <view class="user-info-box" bindtap="toLogin">
      <view class="portrait-box">
        <image class="portrait" src='{{userInfo.avatarUrl?userInfo.avatarUrl:"/static/images/personal/missing-face.png"}}'></image>
      </view>
      <view class="info-box">
        <text class="username">{{userInfo.nickname?userInfo.nickname:'游客'}}</text>
      </view>
    </view>

总结:

  • js获取前端账号和密码时,需要设置唯一表示符号:id
  • 微信提示功能:  wx.showToast({ title: '登陆成功',});可以没有icon
  • 页面交互与后端请求需要使用json和js的相互转换
  • 本地存储StorageSync和Storage都很重要
  • 页面交互的时候,看一下怎样跳转,使用什么跳转函数合适

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/870903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一章:计算机与编程导论

1.1引言 如何解决问题&#xff1a;通过一组精确陈述的指令来设计问题的解决方案。 程序&#xff1a;一组指令以计算机可以接收和执行的格式描述时。 例如&#xff1a;百货商店管理&#xff0c;编写一套指令&#xff0c;在商品购进和售出时对其跟踪。如果这些指令是正确的&…

某行业CTF一道流量分析题

今晚看了一道题&#xff0c;记录学习下。 给了一个hacktrace.pcapng&#xff0c;分析主要内容如下&#xff1a; 上传两个文件&#xff0c;一个mouse.m2s&#xff0c;一个mimi.zip&#xff0c;将其导出。 mimi.zip中存放着secret.zip和key.pcapng 不过解压需要密码&#xff…

FLStudio21水果最新中文版升级下载

FLStudio21最新中文版是一款非常专业的后期编曲音频处理软件&#xff0c;对于音乐编辑处理的领域内的人而言&#xff0c;是非常能够满足需求的一款工具。FL Studio21拥有强大且专业的创作工具&#xff0c;这是先进的创作工具&#xff0c;让你的音乐突破想象力的限制。FL Studio…

Redis缓存雪崩、击穿、穿透?

我们谈谈Redis在实际项目中用作缓存时经常碰到的&#xff0c;也是经常面试的三大问题&#xff1a;缓存穿透、缓存击穿、缓存雪崩&#xff0c;以及这些问题的常用解决方法。 在介绍这三大问题之前&#xff0c;我们需要先了解Redis作为一个缓存中间件&#xff0c;在项目中是如何…

阿里云服务器竞价实例是什么意思?优缺点对比_选择攻略

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例&#xff0c;什么是竞价实例&#xff1f;竞价实例和按量付费相类似&#xff0c;优势是价格更划算&#xff0c;缺点是云服务器实例有被自动释放风险&#xff0c;腾讯云服务器网来详细说下什么是竞价实例&#xff1f;以及…

【动态map】牛客挑战赛67 B

登录—专业IT笔试面试备考平台_牛客网 题意&#xff1a; 思路&#xff1a; 考虑动态的map 可以先定义一个状态&#xff0c;然后用map统计前缀这个状态的出现次数 在这里&#xff0c;定义{a,b}为cnt1 - cnt0和cnt2 - cnt0 当cnt0 和 cnt1都和cnt2相同时&#xff0c;统计贡献…

人机交互中的混合多重反馈

人机交互中态、势、感、知的混合多重反馈是指在交互过程中综合运用不同方面的反馈信息&#xff0c;包括用户态度&#xff08;态&#xff09;、行为动势&#xff08;势&#xff09;、情感体验&#xff08;感&#xff09;和认知反馈&#xff08;知&#xff09;。这种多重反馈可以…

《机器学习系统:设计与实现》读书笔记一

最近几年一直在做算法工程的工作&#xff0c;对机器学习系统有所涉猎&#xff0c;也很感兴趣。近期发现一本开源书籍《机器学习系统&#xff1a;设计与实现》。去图书馆找了它的纸质版&#xff0c;发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇&#xff0c;主…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

Karmada 多云容器编排引擎支持多调度组,助力成本优化

根据 Flexera 最新发布的《2023 年云现状调查报告》&#xff0c;在受访的750家企业中&#xff0c;使用多云的企业比例高达87%&#xff1a; 在使用多云的受访者中&#xff0c;排在前两位的多云挑战分别是&#xff1a;孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所…

Spring源码系列:核心概念解析

前言 本文旨在为读者解析Spring源码中的关键类&#xff0c;以便读者在深入阅读源码时&#xff0c;能够了解关键类的作用和用途。在阅读Spring源码时&#xff0c;经常会遇到一些不熟悉的概念&#xff0c;了解关键类的作用可以帮助读者更好地理解这些概念。 BeanDefinition Be…

力扣:61. 旋转链表(Python3)

题目&#xff1a; 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 示例&…

有人真敢编,有人真敢信。

前几天发过一篇旅游小攻略 自由行的一些小tips 其实提到了一些关于泰国的话题&#xff0c;说实话&#xff0c;我知道有人编泰国噶腰子的小作文&#xff0c;但我一直以为只有一小撮人会信这种&#xff0c;然后从知乎上发现&#xff0c;挺让人无语的&#xff0c;什么去泰国被绑架…

运维监控学习笔记5

Linux的内存是虚拟内存&#xff0c;是物理内存和交换分区swap。 内存&#xff1a; 页&#xff1a;4K&#xff0c; 硬盘&#xff1a;块。 寻址&#xff1a; 空间&#xff1a;内存的合并。大页内存。 free命令&#xff1a; [rootvm1 ~]# free -htotal used fre…

AI项目一:mediapipe测试

若该文为原创文章&#xff0c;转载请注明原文出处。 一. 引言 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌&#xff0c;一系列重要产品&#xff0c;如 YouTube、Google Lens、ARCore、Google Home 以及 Nest&#xff0c;都已深度整合了…

自我介绍的重要性:留下深刻的第一印象

标题&#xff1a;自我介绍的重要性&#xff1a;留下深刻的第一印象 摘要&#xff1a; 自我介绍是我们在社交和职业场合中常常需要面对的一项任务。一个出色的自我介绍可以帮助我们在短时间内给他人留下深刻的第一印象&#xff0c;从而建立良好的人际关系和职业机会。本论文旨在…

Java多线程(4)---死锁和Synchronized加锁流程

目录 前言 一.synchronized 1.1概念 1.2Synchronized是什么锁&#xff1f; 1.3Synchronized加锁工作过程 1.4其他优化操作 二.死锁 2.1什么是死锁 2.2死锁的几个经典场景 2.3死锁产生的条件 2.4如何解决死锁 &#x1f381;个人主页&#xff1a;tq02的博客_CSDN博客…

19-求正数数组的最小不可组成和

题目 给定一个全是正数的数组arr&#xff0c;定义一下arr的最小不可组成和的概念&#xff1a; arr的所有非空子集中&#xff0c;把每个子集内的所有元素加起来会出现很多的值&#xff0c;其中最小的记为min&#xff0c;最大的记为max&#xff1b;在区间[min,max]上&#xff0…

腾讯云香港服务器租用_2核2G20M_2核4G30M

腾讯云香港服务器租用费用表&#xff0c;目前中国香港地域轻量应用服务器可选配置2核2G20M、2核2G30M、2核4G30M&#xff0c;操作系统可选Windows和Linux&#xff0c;不只是香港云服务器&#xff0c;新加坡、硅谷、法兰克福和东京服务器均有活动&#xff0c;腾讯云服务器网分享…

c语言每日一练(6)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…