1. 微信小程序formId的概述
微信小程序提供了一个formId机制,让开发者可以获取用户提交表单时生成的唯一标识符。该机制可以让开发者在特定场景下向用户发送模板消息。
在获取多个formId之前,我们需要先了解formId的基本信息。formId有以下几个特点:
formId仅在提交form表单时才会生成,生成后只能使用一次;
每个用户都有一个formId个数的上限,超出上限后会覆盖之前生成的formId;
formId有失效时间,需要在一定期限内使用,否则将失效。
了解以上信息后,我们可以开始获取多个formId了。
2. 获取多个formId的方法
2.1 在表单提交成功后获取formId
第一种方法是在表单提交成功后,从后台获取formId。这种方式需要后台进行处理,前端无法直接获取formId。
//后台代码示例
//在表单提交成功后,将formId存入数据库
router.post('/submitForm', function (req, res) {
var formId = req.body.formId;
//将formId存入数据库
FormModel.create(formId, function (err, form) {
if (err) {
console.log(err);
res.status(500).send('Error');
} else {
console.log('Form submitted');
res.send('Form submitted');
}
});
});
以上后台代码示例将在表单提交成功后,将formId存入数据库。前端可以从后台获取数据库中的formId。
2.2 在模板消息发送前获取formId
第二种方法是在模板消息发送前,从用户提交表单时生成的通知中获取formId。这种方法需要在小程序端进行处理。
//前端代码示例
//在表单提交成功后,获取formId并发送模板消息
wx.request({
url: 'submitForm',
data: {
formId: e.detail.formId
},
success: function (res) {
var formId = res.data.formId;
wx.request({
url: 'sendTemplateMsg',
data: {
formId: formId,
templateId: 'templateId',
data: {
keyword1: { value: 'value1' },
keyword2: { value: 'value2' },
keyword3: { value: 'value3' },
keyword4: { value: 'value4' }
},
page: 'pages/index/index'
},
success: function (res) {
console.log('Template message sent:' + res);
},
fail: function (res) {
console.log('Failed to send template message:' + res);
}
});
},
fail: function (res) {
console.log('Failed to submit form:' + res);
}
});
以上示例代码在提交表单成功后,获取formId并发送模板消息。其中formId从后台获取,模板消息的发送采用了微信官方提供的模板消息API。
3. 总结
本文介绍了微信小程序获取多个formId的两种方法,分别是在表单提交成功后获取formId和在模板消息发送前获取formId。前者需要后台进行处理,后者需要在小程序端进行处理。
获取多个formId可以让开发者在特定场景下向用户发送模板消息。但是需要注意的是,每个用户的formId个数有限,需要在一定期限内使用,否则将失效。因此,开发者需要根据自己的业务需求进行合理的使用。