4.9【微信小程序全栈开发课程】意见反馈(四)--提交反馈信息

简介: 1、创建后端操作文件先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下

1、创建后端操作文件


先在后端server/controllers文件夹中创建操作文件createopinion.js,用来将从前端页面提交的数据,插入到opinions表中,创建完之后,页面目录如下


image.png


2、添加路由


在路由管理文件server/routes/index.js文件中添加路由


//需要添加的代码
router.post('/createopinion', controllers.createopinion)
//参考代码,无需粘贴
//module.exports = router


3、在前端添加提交方法


编辑src/pages/opinion/opinion.vue文件,在methods函数中添加summit方法,当意见的字数大于0时,可以提交数据,当意见的字数为0时,需要提示反馈内容不能为空


1)在src/util.js工具函数文件中封装提示框方法


//参考代码,无需粘贴
//export function showSuccess (text) {
//...
//)
//需要添加的内容
export function showModal (title, content) {
  wx.showModal({
    title,
    content,
    showCancel: false
  })
}


(2)在opinion.vue文件中引用工具函数文件中的showModal、post方法


//参考代码,无需粘贴
//<script>
//需要添加的部分
import {showModal,post} from '@/util'
//参考代码,无需粘贴
//export default {


(3)在methods函数中添加summit方法


//参考代码,无需粘贴
//uploadPicture () {
//...
//},
//需要添加的部分,不要忘记在上一行添加逗号隔开
async summit() {
  //当反馈的字数大于0时,可以提交反馈信息
  if(this.word_count > 0){
    try{
      // data是要提交给后端的数据,其中包含openid、opinion意见信息、src图片链接、wechat用户微信
      const data = {
        openid: this.userinfo.openId,
        opinion:this.opinion,
        src:this.src.join(","),
        wechat:this.wechat
      }
      //通过这行代码请求请求后端服务器,并传递参数data
      //await我们再ES6知识点中讲过,等后端执行完并获取到返回数据之后,再往下执行
      const res = await post('/weapp/createopinion', data)
      console.log("从后端返回的执行正确的信息是:",res)
      showModal("提交成功","已将你的反馈提交给了开发者~")
    }catch(e){
      //如果执行失败,util.js中的请求方法,会将返回信息的状态变成rejected
      //rejected状态的信息会被当成错误捕捉到
      console.log("从后端返回的执行错误的信息是:",e)
      showModal("提交失败","服务器出了一点错误~请稍后再试")
    }
  //当反馈的字数为0时,提示反馈内容不能为空
  }else{
    showModal("提交失败","反馈内容不能为空哦~")
  }
}


try…catch是捕获错误的语法,如果try中包含的代码块有错误,catch就会捕捉到错误并执行catch包含的代码块。


在这里能捕捉到在util.js中的请求方法,返回信息为rejected状态的数据


try{
}catch(e){
}



(4)在template页面提交按钮上面添加点击事件


<!-- 原代码 -->
<button>提交</button>
<!-- 修改为 -->
<button @click="summit">提交</button>


4、编辑后端操作文件


这里的后端操作文件也就是server/controllers/createopinion.js文件,填充下面的代码

//引入server/qcloud.js文件,qcloud.js文件是mysql的软件工具包,引入后我们也可以使用knex来操作数据库了
const {mysql} = require('../qcloud')
//module.exports是向外暴露代码,后面跟着箭头函数(就是函数的一种简写形式,在ES6语法的讲解中提过)
module.exports = async (ctx) => {
  //ctx.request.body用来获取post请求的参数
  const {openid,opinion,src,wechat} = ctx.request.body
  try{
    //knex语法,插入数据到opinions数据表中
    await mysql('opinions').insert({
      openid,opinion,src,wechat
    })
    // 执行的结果会保存到ctx.state中,也就是从后端返回到前端的数据
    // 执行成功返回的数据,code设为0
    ctx.state.data = {
      code: 0,
      msg: 'success'
    }
    console.log("执行成功")
  }catch(e){
    console.log("执行错误:",e)
    // 执行失败返回的数据,code设为-1
    ctx.state = {
      code: -1,
      data: {
        msg: '添加失败' + e.sqlMessage
      }
    }
  }
}


5、提交数据测试


(1)不填写反馈信息,点击提交,会出现错误提示


image.png


(2)填写反馈信息点击提交


控制台会打印出从后端传回来的信息


image.png


同时,打开终端,这时在server文件夹下面npm run dev启动的后端,也会打印出执行成功的信息


在src文件夹下面写console.log会在控制台中打印


在server文件夹下面写console.log会在终端中打印


image.png


目录
相关文章
|
2月前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
24天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
30天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
73 0
|
2月前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
28天前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
26 0
|
2月前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
2月前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
2月前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
2月前
|
人工智能 小程序 JavaScript
【一步步开发AI运动小程序】十四、主包超出2M大小限制,如何将插件分包发布?
本文介绍了如何从零开始开发一个AI运动小程序,重点讲解了通过分包技术解决程序包超过2M限制的问题。详细步骤包括在uni-app中创建分包、配置`manifest.json`和`pages.json`文件,并提供了分包前后代码大小对比,帮助开发者高效实现AI运动功能。

热门文章

最新文章