热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序怎么整理代码格式,微信小程序如何上传有文字的表格

微信如今坐拥10亿日活,对普通用户体验真是操碎了心。对于模板消息引入formId的机制,极大程度上限制了商家通过推送消息来维护用户关系。比如说用户使用某个小程序发布了一个百人报名活

正文开始,先感谢技术贴-微信小程序模板消息还能群发?无限制推送? - 简书(网址http://www.jianshu.com/p/2d21c6875029 截止到发稿日,链接已经打不开),整个技术实现都是参照这篇的,本文目的旨在做个记录,亦或是以纯技术实现的角度为需要的码农提供一个教程。
        技术从第二段小程序开始,前言可以略过。


前言     微信小程序同微信公众号一样,也有模板消息发送功能,不一样的是公众号是直接通过公众号下发通知,而小程序的通知则是下发到了一个单独的对话框内——服务通知。


    与微信公众号发送模板消息的另一个不同,就是小程序发送模板消息必须要带上formId这个参数才能发送。

    formId,顾名思义,就是表单id,是在小程序页面表单提交的过程中可以获取到的一串数字或者随机英文字母数字的码,通过这种方式获取到的表单id可以给对应用户(表单提交人)发送一条模板消息。当然了,还考虑到商家对支付用户可能需要多次下发例如支付成功通知、发货通知、退款通知的这类通知,微信允许开发者在用户支付的过程中获取表单id(实际上是支付过程中的预支付码),通过此码,可以重复为用户下发最多3条的模板消息。

    微信如今坐拥10亿日活,对普通用户体验真是操碎了心。对于模板消息引入formId的机制,极大程度上限制了商家通过推送消息来维护用户关系。但是不是所有应用场景都适合这个规则。

    比如说用户使用某个小程序发布了一个百人报名活动。如果能实现有一个人报名,就向活动发起者发送一条报名通知,那就大大提高了工具的使用效率,不用发起人每次都打开小程序去看有多少人参与了报名。显然,当前的消息发送机制无法满足这个需求。

小程序端

    构建formId 池,每次将用户提交的表单都搜集起来存入formId池,需要发送通知的时候从中取出即可。    将用户有可能点击的区域覆盖一层不可见的button,并将整个页面用于传输formId的button包裹在一Form标签内,一旦用户有点击按钮的操作,就将获取到的formId传送走。

下面是表单以及不可见按钮的wxml代码

下面是样式代码

.submit_kong_btn{position:absolute;width:100%;height:100%;left:0;top:0;opacity:0;}

下面是小程序js代码

Page({ formSubmit_collect: function(e) { let formId = e.detail.formId; dealFormIds(formId, url); console.log('form发生了submit事件,推送码为:',formId) }})function dealFormIds(formId,url='') { if(formId=='' || formId == 'undefined') { console.log('获取表单id为无效') return 0; } let data = { formid: formId, expiretime: parseInt(new Date().getTime() / 1000)+604800 //计算7天后的过期时间时间戳 } var formIds = []; formIds.push(data);//将data添加到数组的末尾 saveFormIds(formIds,url);formIds = JSON.stringify(formIds); var data = {formids:formIds,url:url}; //todo 向后端服务器传送表单id}结尾

    代码实现需求的过程并不复杂,在有些需要执行其他事件的地方即便被表单id收集的按钮覆盖,也不影响事件。但是值得一提的是在表单id传输的过程中如果在还没有获取到formid的时候就跳转走了,这样是获取不到formid。所以要在获取完表单id之后再做跳转事件,如果是在原有代码基础上修改,确实额外添加了一些工作量。



推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • XMLhttpREquest_Ajax技术总结之XmlHttpRequest
    Ajax1、 什么是ajax   ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
  • backgroundposition和长图实现鼠标悬浮动画效果
    以下图片及代码均来自京东云点击这里进入京东云思路和效果图:background-position:00可以用js动态的将长图按帧数一帧一阵的展示出来效果类似gif,红框就是可视界面 ... [详细]
  • Tooltips效果,鼠标经过显示提示 ... [详细]
author-avatar
芹牵一线
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有