湖畔开源电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
热搜: 4G NB ZigBee WiFi
查看: 2430|回复: 0

微信小程序入门6--利用POST提交控制开关

[复制链接]

88

主题

89

帖子

814

积分

超级版主

Rank: 8Rank: 8

积分
814
发表于 2020-3-10 16:48:21 | 显示全部楼层 |阅读模式
本帖最后由 湖畔科技 于 2020-3-10 18:33 编辑

一、跳过域名校检
为了更加方便的查看效果,可以在微信开发者工具中,可以临时开启开发环境不校验请求域名、TLS版本及HTTPS证书 选项,跳过服务器域名的校验。
二、编写代码
2.1 复制开关状态URL
进入个人管理中心,链接: https://nnhpiot.com/Customdevice/devicedetails/86.html,在管理设备中查看设备。
在许多的设备中,往下拉,找到控制LED的开关,将其URL复制备用,完整的链接为:https://www.nnhpiot.com/v1/datapoints/device/86/sensor/85
2.2 GET查询状态
小程序调用wx.request(Objectobject)方法发起网络请求,域名必须使用HTTPS/WSS协议。默认超时时间和最大超时时间都是60S。GET请求类似于浏览器的URL请求。在tool方法中采用GET请求查询开关的状态。请求成功之后采用IF语句进行判断,若value的值为0,则将图片显示为关的图片,反之则显示为开的图片。onLoad函数可以在页面第一次加载时触发,在onLoad函数中调用tool方法。
2.3 POST改变状态
小程序调用wx.request(Objectobject)方法发起网络请求,域名必须使用HTTPS/WSS协议。默认超时时间和最大超时时间都是60S。
POST方法的header['content-type'] 为 application/x-www-form-urlencoded的数据,method:为POST。
采用点击图片以改变开关的状态,对图片外的VIEW添加bindtap方法。在bindtap方法中进行post提交。若当前的状态为开(value为1),则改变状态时,状态变为关(value为0)。需要将状态变为开(value为1),则需要提交1,状态变为关(value为0),则需要提交250.
若是post提交成功,则更新页面显示,重新进行上述的get查询状态,调用tool方法。
2.4 编写代码
打开utils文件的utils.js文件,将以下代码完全替换,用于时间戳的转换。
  1. const formatNumber = n => {
  2.   n = n.toString()
  3.   return n[1] ? n : '0' + n
  4. }

  5. module.exports = {
  6.   formatTime: formatTime
  7. }

  8. function formatTime(number, format) {
  9.   var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
  10.   var returnArr = [];

  11.   var date = new Date(number * 1000);
  12.   returnArr.push(date.getFullYear());
  13.   returnArr.push(formatNumber(date.getMonth() + 1));
  14.   returnArr.push(formatNumber(date.getDate()));

  15.   returnArr.push(formatNumber(date.getHours()));
  16.   returnArr.push(formatNumber(date.getMinutes()));
  17.   returnArr.push(formatNumber(date.getSeconds()));

  18.   for (var i in returnArr) {
  19.     format = format.replace(formateArr[i], returnArr[i]);
  20.   }

  21.   return format;
  22. }
复制代码
打开建立的wxml 文件将以下代码完全替换。
  1. <view>时间:{{times}}</view>
  2. <view>控制操作(点击图标以改变状态)</view>
  3. <view bindtap='bindtapimg'>
  4.   <image src="{{image}}" class="img"></image>
  5. </view>
复制代码
打开建立的wxss 文件将以下代码完全替换。
  1. .img{
  2.   width: 80px;
  3.   height: 120px;
  4. }
复制代码
打开建立的js文件将以下代码完全替换,注意替换您的u-apikey。
  1. const time = require('../../utils/util.js'); //引用utils.js进行时间戳转换
  2. Page({
  3.   data: {
  4.     'times': null, //初始值
  5.     'value': null,
  6.     'image': null,
  7.     'tjvalue': null,
  8.   },

  9.   tool: function () {   //进行封装
  10.     var that = this; //把this对象复制到临时变量that
  11.     wx.request({
  12.       url: 'https://www.nnhpiot.com/v1/datapoints/device/86/sensor/85', //请求数据的链接
  13.       success: function (res) {
  14.         that.setData({
  15.           times: time.formatTime(parseInt(res.data.timestamp), 'Y/M/D h:m:s'), //时间戳转换
  16.           value: res.data.value
  17.         }); //和页面进行绑定可以动态的渲染到页面
  18.         if (that.data.value == 0) {
  19.           that.setData({  'image': "../../img/close.png"   })
  20.         } else {
  21.           that.setData({  'image': "../../img/open.png"    })
  22.         }
  23.       },
  24.     })
  25.   },  
  26.   onLoad: function(options) {
  27.     this.tool()  //进行调用
  28.   },

  29.   bindtapimg: function() {
  30.     var that = this;
  31.     if (that.data.value == 0) {
  32.       that.setData({ 'tjvalue': 1    })
  33.     } else {
  34.       that.setData({ 'tjvalue': 250  })
  35.     }
  36.     wx.request({
  37.       url: "https://www.nnhpiot.com/v1/datapoints/device/86/sensor/85",
  38.       method: "POST",
  39.       data: {
  40.         "value": that.data.tjvalue  //提交1或250改变状态
  41.       },
  42.       header: {
  43.         "Content-Type": "application/x-www-form-urlencoded;text/html; charset=UTF-8",
  44.         'u-apikey': '3b3f3cabd16293eff6901903648b767b'
  45.       },
  46.       success: function(res) {
  47.         if (res.data == 'success') {
  48.           that.tool()  //进行调用
  49.         } else {
  50.           wx.showToast({  title: '修改失败',    })
  51.         }
  52.       },
  53.     })
  54.   }
  55. })
复制代码


完成后保存,微信小程序端的页面为:

点击图片改变状态:

刷新网页端,状态进行相应的改变。

以上就是利用POST提交控制开关的全部步骤,感谢观看!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|官方淘宝店|手机版|湖畔科技官网|加入QQ群|湖畔开源电子论坛 ( 公安备案:45010702001370(交互式论坛) 工信部备案:桂ICP备17008293号 )

GMT+8, 2024-4-20 14:31 , Processed in 0.045080 second(s), 22 queries .

Powered by 湖畔科技

Copyright © 2001-2021

快速回复 返回顶部 返回列表