零基础学小程序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
          })
        }
      })
    }
  },
})

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

相关文章
|
8天前
|
云安全 弹性计算 安全
阿里云服务器安全功能解析:基础防护与云安全产品参考
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题。阿里云服务器除了提供基础的防护之外,还提供了一系列安全防护类云产品,以确保用户云服务器的安全。本文将详细介绍阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品,帮助用户更好地理解和使用阿里云服务器的安全功能。
|
4月前
|
小程序 JavaScript 前端开发
微信小程序开发全流程:从注册到上线的完整指南
这篇文章详细记录了微信小程序的完整开发到最终上线的每一个步骤。适合对小程序开发感兴趣的个人开发者或希望了解完整流程的学习者,涵盖了云开发、事件绑定、生命周期管理、组件使用等关键内容。
1230 11
|
5月前
快速拥有满血全功能DeepSeek,再也不怕服务器繁忙!
官网繁忙不用怕!现在跟我一起通过视频学习阿里云《零门槛、即刻拥有 DeepSeek-R1 满血版》技术解决方案,最快两步三分钟就能拥有 免费!满血版!随时可用!支持联网搜索!带有个人知识库(RAG)!的DeepSeek 模型能力!!!
185 0
快速拥有满血全功能DeepSeek,再也不怕服务器繁忙!
|
7月前
|
弹性计算 运维 监控
云产品评测:云服务诊断 — ECS实例健康状态与诊断功能体验
作为一名运维工程师,我日常管理和维护云资源,确保服务稳定运行。阿里云的云服务诊断功能提供了便捷的方式实时了解和优化ECS实例的健康状态。通过健康状态功能,我能够查看CPU、内存等指标,及时发现并解决性能瓶颈,提升了约30%的工作效率。诊断功能则帮助我快速定位复杂问题,减少了40%的诊断时间,并提供详细的优化建议。尽管功能已很强大,但仍建议进一步细化诊断结果和增加自定义告警选项,以提升使用体验。我非常推荐此工具给其他运维人员。
216 22
|
6月前
|
弹性计算 安全 搜索推荐
阿里云国际站注册教程:阿里云服务器安全设置
阿里云国际站注册教程:阿里云服务器安全设置 在云计算领域,阿里云是一个备受推崇的品牌,因其强大的技术支持和优质的服务而受到众多用户的青睐。本文将为您介绍阿里云国际站的注册过程,并重点讲解如何进行阿里云服务器的安全设置。
|
7月前
|
域名解析 弹性计算 安全
阿里云服务器租用、注册域名、备案及域名解析完整流程参考(图文教程)
对于很多初次建站的用户来说,选购云服务器和注册应及备案和域名解析步骤必须了解的,目前轻量云服务器2核2G68元一年,2核4G4M服务器298元一年,域名注册方面,阿里云推出域名1元购买活动,新用户注册com和cn域名2年首年仅需0元,xyz和top等域名首年仅需1元。对于建站的用户来说,购买完云服务器并注册好域名之后,下一步还需要操作备案和域名绑定。本文为大家展示阿里云服务器的购买流程,域名注册、绑定以及备案的完整流程,全文以图文教程形式为大家展示具体细节及注意事项,以供新手用户参考。
|
7月前
|
弹性计算 运维 开发者
关于ECS 健康状态 诊断功能评测
这是一位开发兼运维工程师的观点,认为云资源的健康状态和诊断功能作用有限,因为大多数问题根源在于代码质量,而这些工具无法改善低下的代码质量导致的资源异常。
|
8月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码服务器环境配置及app功能
一对一直播源码阿里云服务器环境配置及要求
|
10月前
|
JSON 小程序 前端开发
创建一个属于自己的小程序(注册开发账号)
介绍如何创建微信小程序账号,包括注册流程、下载安装微信开发者工具、创建项目以及项目结构介绍。
创建一个属于自己的小程序(注册开发账号)
|
10月前
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用

热门文章

最新文章