天河微信小程序入门《四》:融会贯通,form表单提交数据库

天河在阔别了十几天之后终于又回来了。其实这篇文章里的demo是接着(天河微信小程序入门《三》)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来。放到今天来看,从前台提交数据到数据库已经是没有什么可写的了。不过既然开篇了就不能太监么,所以还是分享出来给大家。
我当时的目的是为了实验api的功能和跟后台数据的通讯存储,所以没有考虑到美观之类的,界面非常丑请大家包涵。
一个带form表单的页面

在这里定义好自己form表单的元素名称


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<view class="page">

  <view class="page__hd">

    <text>表单提交</text>

  </view>

<form class="page__bd" catchsubmit="formSubmit" catchreset="formReset">

  <view class="section">

    <input name="name" placeholder="姓名" auto-focus/>

  </view>

  <view class="section">

    <input name="age" type="number" placeholder="年龄"/>

  </view>

  <view class="section section_gap">

      <view class="section__title">性别</view>

      <radio-group name="gender">

        <label><radio value="MAN"/>MAN</label>

        <label><radio value="WOMAN"/>WOMAN</label>

      </radio-group>

  </view>

    <view class="btn-area">

      <button formType="submit">提交</button>

      <button formType="reset">重置</button>

    </view>

    <view class="page__hd" wx:if="{{error}}">

      <text>{{error}}</text>

    </view>

</form>

然后调用wx.request的API方法将表单提交到后台


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

Page({

  data: {

    pickerHidden: true,

    chosen: ‘‘

  },

  

  pickerConfirm: function(e) {

    this.setData({

      pickerHidden: true

    })

    this.setData({

      chosen: e.detail.value

    })

  },

  pickerCancel: function(e) {

    this.setData({

      pickerHidden: true

    })

  },

  pickerShow: function(e) {

    this.setData({

      pickerHidden: false

    })

  },

  formSubmit: function(e) {

    var _this = this

    /*********************   

    wx.redirectTo({

      url:‘create_photo‘

    })

    **********************/

    wx.request({

      url: http://dev.wxapp-union.com/setForm,

      data:

        {

          name: e.detail.value.name,

          age: e.detail.value.age,

          gender: e.detail.value.gender

        }

      ,

      method: ‘POST‘, // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

      header: {

        ‘content-type‘: ‘application/x-www-form-urlencoded; charset=UTF-8‘

      },

      success: function(res){

        var err = res.data.error

        if(err) {

          _this.setData({

             error:err

          })

        }

        else {

          wx.redirectTo({

            url:‘create_photo‘

          })

        }

      },

      fail: function() {

        // fail

      },

      complete: function() {

        // complete

      }

    })

  },

  formReset: function(e) {

    console.log(‘form发生了reset事件,携带数据为:‘, e.detail.value)

    this.setData({

      chosen: ‘‘

    })

  }

})

这里需要提到几个坑,首先是你所有的js和json文件,如果创建了,里面一定要有内容,哪怕json文件就是一对花括号
{}
哪怕js文件就只有一个Page
Page({})
都必须有。如果你没有,微信的开发工具是不会报错的。但是在加载的时候,这里其实已经出错了,这些空文件后面的文件统统都没有加载进去。结果导致你后面再写任何代码都是该文件不存在或者该方法不存在。这里要感谢 @leochen帮我找到的这个bug,解决了我的按钮提交无效。
ok我们来看看效果:

这是输入界面,然后我在微信开发工具的调试界面看form提交的格式

我们可以看到提交的内容是

  • name:
    微信小程序联盟
  • age:
    18
  • gender:
    MAN

提交的head是

  • content-type:
    application/x-www-form-urlencoded; charset=UTF-8

因为这两个值都是我们在代码中写的。
这里需要说明一下,head并不是必须的,微信默认的content-type是application/json,但是我的后台框架配置必须是x-www-form-urlencoded格式才接收,所以这里跟微信官方的文档不同,而charset=UTF-8是一种习惯问题,告诉后台编码格式,这样更规范。
闲话少说,我们看看后台的断点

看来我们的req已经成功的接收到了前台传过来的表单,然后我一个个的放入我的对象中。最后调用mybatis存入数据库

这就是我存入数据库的数据。这样一个完整的表单提交录入就完成了。
虽然这个功能很简单,但是因为微信提供的后台请求方式是自己封装的,所以可能还是会有一些刚入门的前端朋友不习惯,毕竟是第一次使用嘛,总想试一试是否能够成功录入数据库。所以我才写了这样一个简单的demo。
完整的demo我这里就不上传了,因为没有后台的服务和数据库,下了也用不了。我考虑后面是不是可以做成一个简单的api,然后再把查询也做了,这样大家就可以提交之后看到效果了,那个时候再把完整的demo分享出来供大家参考。
以下是建库脚本,如果有能力的后端猿们也可以帮我把这件事情做了,分享给大家,毕竟众人拾柴火焰高嘛!


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

-- ==================================================

-- formDemo信息表

-- ==================================================

DROP TABLE IF EXISTS d_form;

CREATE TABLE d_form (

        id CHAR(32) NOT NULL COMMENT ‘ID序列号‘,

        name VARCHAR(32) NOT NULL COMMENT ‘用户名‘,

        age INT NOT NULL DEFAULT 0 COMMENT ‘年龄‘,

        gender CHAR(32) NOT NULL DEFAULT ‘DEFAULT‘ COMMENT ‘性别‘,

        cre_tim TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘注册时间‘,

        upd_tim DATETIME COMMENT ‘更新时间‘,

        remark VARCHAR(128) COMMENT ‘备注‘,

        PRIMARY KEY (id)

) COMMENT=‘formDemo信息表‘ ENGINE=InnoDB;

CREATE UNIQUE INDEX uniq_idx_form_name ON d_form (name);

时间: 2024-09-30 20:08:33

天河微信小程序入门《四》:融会贯通,form表单提交数据库的相关文章

天河微信小程序入门《三》:打通任督二脉,前后台互通

原文链接:http://www.wxapp-union.com/forum.php?mod=viewthread&tid=505&extra=page%3D1 天河君在申请到https证书后就第一时间去部署后台环境,但是发现每次访问https都要带上8443端口实在是很坑爹啊,作为一个强迫症晚期,我要做的自然是不带端口直接访问.打开你tomcat下的conf文件夹,编辑里面的server.xml <Connector port="80" protocol=&quo

天河微信小程序入门:阿里云tomcat免费配置https

天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我一起,共同进步,以致千里.上一篇是天河君在通过验证之后,兴奋的立即上手,在手机上跑了一回微信小程序.(天河微信小程序入门<一>)冷静下来后,天河发现,之前的很多demo在手机上都用不了,因为公测后得到了appId,结果导致无法与后台通讯,appId和后台的服务器域名是绑定的.没有后台的小程序是不完

微信小程序入门五: wxml文件引用、模版、生命周期

实例内容 wxml文件引用(include.import) 模版 小程序生命周期 实例一: include方式引用header.wxml文件 文件引用对于代码的重用非常重要,例如在web开发中我们可以将公用的header部分和footer等部分进行提取,然后在需要的地方进行引用. 微信小程序里面,是包含引用功能的--include.import.这两个引用文件的标签,使用基本差不多,这里先说一下include. 微信中的视图文件引用,引用过来的都是没有渲染的,基本类似于直接将引用过来的文件复制到

Form表单提交数据的几种方式

一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交,每一个input标签都需要有一个name属性,才能进行提交. <form action='http://www.123.com/postValue' method='post'> <input type='text' name='username' /> <input type=

微信小程序入门篇

微信小程序入门篇: 准备工作 IDE搭建 就不多说了,没有内测码去下载个破解版吧,我用了一下,学习完全够了!IDE破解版+安装教程 图片发自简书App 知识准备 JavaScrip还是要看看的,推荐教程 廖雪峰大神的博客 HTML+CSS 大概知道是干啥的就行 从零开始 微信小程序中就四种类型的文件 js ---------- JavaScrip文件 json -------- 项目配置文件,负责窗口颜色等等 wxml ------- 类似HTML文件 wxss ------- 类似CSS文件

微信小程序入门(三)

11.开发框架基本介绍 四个组成部分,其它三个前面介绍过了,主要WXS:WXS:对wxml增强的一种脚本语言,可以对请求的数据进行filter或者做计算处理,帮助wxml快速构建出页面结构. 12.WXML之语法 概念 WXML(WeiXin Markup Language)是框架设计的一套标签语言,结合组件.WXS和时间系统,可以构建出页面的结构. 语法 <标签名 属性名=“属性名1” 属性名=“属性名2”...> ...</标签名> 简单例子 <view> Hell

微信小程序入门正确姿势(一)

>>>前言 这是 [认真学编程] 系列的 第4篇 文章(微信小程序入门系列),欢迎点赞分享.写留言,这些都是对我最好的支持. 本系列适合有一定开发经验的前端Coder,新手慎入. 本文是微信小程序入门系列第一篇文章,主要有以下几点内容: 1. 教程安排 2. 小程序背景及应用场景 3. 小程序优势及局限 4. 入门必备 >>>学习安排 以上顺序可能会有变动. >>>背景 在PC互联网时代,想必大家都经历过这样的情形:时不时收到软件更新提示,等几分钟甚至

CK2020微信小程序入门与实战 常用组件API开发技巧项目实战

新年伊始,学习要趁早,点滴记录,学习就是进步! 随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853  获取资料. 下载地址:https://pan.baidu.com/s/1hsU5EIS 微信小程序入门与实战 常用组件API开发技巧项目实战 小程序官方正式公告,开放了更多的入口,个人开发者可以申请

微信小程序入门与实战/常用组件/API/开发技巧/项目实战 共11章

实战开发电影资讯微信小程序 学习之前需要掌握JavaScript和CSS基础 ----------------课程目录---------------- 第1章:什么是微信小程序 开篇及课程特色介绍 直观感受一下微信小程序 小程序适合做什么样的应用 对开发者的影响 学习基础 小作业 第2章:环境搭建与开发工具 开篇介绍及下载工具 小程序目前情况及限制 小程序开发工具介绍 第3章:开始小程序之旅 本章内容简介 官方种子项目介绍与小程序的文件结构 新建我们自己的项目:ReaderMovie 开始制作项