零基础学小程序004----小程序post请求,提交数据到服务器,小程序下单,小程序用户注册功能

简介: 零基础学小程序004----小程序post请求,提交数据到服务器,小程序下单,小程序用户注册功能

由于这段时间工作比较忙,小程序入门系列课程一直没有更新,今天好不容易抽个时间来更新系列教程,今天的这个教程对大家很有用,涉及到和后台服务器的数据交互。

不多说,先看效果图


技术要点


姓名,手机号,地址为空验证

post请求

简单的下单功能实现

api数据解析

post提交参数有数组时的问题解决

一,简单页面布局


简单的把页面布局写出来,主要是几个input输入框

<!-- order.wxml --><view class="login">
  <form bindsubmit="formSubmit">
    <input name="name" class="login-input" type="text" placeholder="请输入姓名" />
    <input name="mobile" class="login-input" type="number" placeholder="请输入手机号" />
    <input name="address" class="login-input" type="text" placeholder="请输入地址" />
    <button class="btn_login" formType="submit">提交订单</button>
  </form></view>

二,做提交数据的简单校验


主要判断name,phone,address是否为空,手机号是否符合11位。

if (e.detail.value.name.length == 0) {      this.showErrorToast('姓名不能为空')
    } else if (e.detail.value.mobile.length == 0) {      this.showErrorToast('手机号不能为空')
    } else if (e.detail.value.mobile.length != 11) {      this.showErrorToast('请输入11位手机号码')
    } else if (e.detail.value.address.length ==0) {      this.showErrorToast('地址不能为空!')
    }

三,先说一下api


url:https://30paotui.com/buyer/order/create

请求类型:post

提交参数格式如下

openid:小程序小石头
phone:12345678901
name:夏天
address:杭州市临平街道
items:[{productId:1,productQuantity:2},{productId:2,productQuantity:2}]

post请求后服务器返回json如下

1,成功

{    "code": 100,    "msg": "成功",   
     "data": {
             "orderID": "1529819130135395193"
     }
}

2,失败

{    
   "timestamp": "2018-06-24T04:34:33.413+0000", 
   "status": 500,
    "error": "Internal Server Error", 
    "message": "微信id必传",   
     "path": "/buyer/order/create"}

比如我openid参数传空


四,提交数据到服务器(下单)


这里是重点,不管是注册用户,用户提交订单,提交数据到后台都是一样的原理,把这里学会了,你以后再做数据提交也就都会了(代码格式有点乱,可以点击查看原文看源码)

formSubmit: function(e) {
    if (e.detail.value.name.length == 0) { 
         this.showErrorToast('姓名不能为空')
    } else if (e.detail.value.mobile.length == 0) {
         this.showErrorToast('手机号不能为空')
    } else if (e.detail.value.mobile.length != 11) {
         this.showErrorToast('请输入11位手机号码')
    } else if (e.detail.value.address.length ==0) {
         this.showErrorToast('地址不能为空!')
    } else {      // post提交表单
      wx.request({ 
                url: 'https://30paotui.com/buyer/order/create',        header: {          "Content-Type": "application/x-www-form-urlencoded"
        }, 
                       method: "POST",        
                       data: {          
                       openid: 'qclqclqcl', //这里先写死微信id
                        phone: e.detail.value.mobile, 
                        name: e.detail.value.name,          address: e.detail.value.address,          items: JSON.stringify([{            productId: 1,            productQuantity: 2
          }, {            productId: 2,            productQuantity: 2
          }])
        },        success: function(res) {          console.log(res)          if (res.statusCode != 200) {
            wx.showToast({ //这里提示失败原因
              title: res.data.message,              icon: 'loading',              duration: 1500
            })
          } else {
            wx.showToast({              title: '订单提交成功', //这里成功
              icon: 'success',              duration: 1000
            })
          }
        },        fail: function(res) {          console.log(fail)
          wx.showToast({            title: '请求失败',            icon: 'none',            duration: 1500
          })
        }
      })
    }
  },

几点注意

1,这里的formSubmit函数名对应wxml文件里的

<form bindsubmit="formSubmit">

2,post提交的参数中有数组的话,需要用JSON.stringify()方法把数组转化为string

items: JSON.stringify([{            productId: 1,            productQuantity: 2
          }, {            productId: 2,            productQuantity: 2}])

到这里就可以实现下单功能了


下面贴出来完整代码(代码格式有点乱,可以点击查看原文看源码)

// order.js
Page({  data: {},  showErrorToast: function(e) {
    wx.showModal({      title: '提示!',      confirmText: '朕知道了',      showCancel: false,      content: e,      success: function(res) {        if (res.confirm) {          console.log('用户点击确定')
        }
      }
    })
  },  formSubmit: function(e) {    if (e.detail.value.name.length == 0) {      this.showErrorToast('姓名不能为空')
    } else if (e.detail.value.mobile.length == 0) {      this.showErrorToast('手机号不能为空')
    } else if (e.detail.value.mobile.length != 11) {      this.showErrorToast('请输入11位手机号码')
    } else if (e.detail.value.address.length ==0) {      this.showErrorToast('地址不能为空!')
    } else {      // post提交表单
      wx.request({        url: 'https://30paotui.com/buyer/order/create',        header: {          "Content-Type": "application/x-www-form-urlencoded"
        },        method: "POST",        data: {          openid: 'qclqclqcl', //这里先写死微信id
          phone: e.detail.value.mobile,          name: e.detail.value.name,          address: e.detail.value.address,          items: JSON.stringify([{            productId: 1,            productQuantity: 2
          }, {            productId: 2,            productQuantity: 2
          }])
        },        success: function(res) {          console.log(res)          if (res.statusCode != 200) {
            wx.showToast({ //这里提示失败原因
              title: res.data.message,              icon: 'loading',              duration: 1500
            })
          } else {
            wx.showToast({              title: '订单提交成功', //这里成功
              icon: 'success',              duration: 1000
            })
          }
        },        fail: function(res) {          console.log(fail)
          wx.showToast({            title: '请求失败',            icon: 'none',            duration: 1500
          })
        }
      })
    }
  },
})

下图是数据提交成功后,服务器上的数据

相关文章
|
1月前
|
小程序
微信小程序如何实现进入小程序自动连WiFi功能
微信小程序如何实现进入小程序自动连WiFi功能
|
4天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
30 0
|
4天前
|
数据采集
LabVIEW VI服务器功能
LabVIEW VI服务器功能
|
15天前
|
域名解析 弹性计算 Linux
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
本文为大家介绍了2024年购买阿里云服务器和注册域名,绑定以及备案的教程,适合需要在阿里云购买云服务器、注册域名并备案的用户参考,新手用户可通过此文您了解在从购买云服务器到完成备案的流程。
阿里云购买云服务器、注册域名、备案及绑定图文教程参考
|
4天前
|
小程序
微信小程序用户登陆和获取用户信息功能实现
微信小程序用户登陆和获取用户信息功能实现
8 0
|
4天前
|
Windows
LabVIEW中ActiveX控件、ActiveX服务器和类型库注册
LabVIEW中ActiveX控件、ActiveX服务器和类型库注册
11 4
|
15天前
|
弹性计算 Shell Apache
某时间段访问apache 服务器的请求IP
【4月更文挑战第29天】
17 2
|
15天前
|
弹性计算 Shell Apache
|
15天前
|
前端开发 安全 搜索推荐
【专栏】ngrok` 是一款让本地服务器暴露到公网的工具,提供外网访问、临时公网地址、安全隧道及实时更新功能
`【4月更文挑战第29天】ngrok` 是一款让本地服务器暴露到公网的工具,提供外网访问、临时公网地址、安全隧道及实时更新功能。使用简单,包括下载客户端、注册认证、启动本地服务和执行命令。在前端开发中,ngrok 用于本地开发调试、跨设备测试、前后端联调、演示分享和应急处理。它提高了开发效率,简化网络环境和部署问题。无论是移动应用测试还是团队协作,ngrok 都能发挥关键作用,是前端开发者必备神器。尝试使用 ngrok,提升你的开发体验。
|
16天前
|
前端开发 JavaScript
同源策略下,服务器会收到浏览器的请求吗?
同源策略下,服务器会收到浏览器的请求吗?

热门文章

最新文章