接下來的幾篇小豬將圍繞模板消息推動(dòng)的功能分別向讀者介紹小程序的幾個(gè)功能今天要介紹的是獲取formId為什么要獲取formId在回答這個(gè)問題之前先簡(jiǎn)單的介紹下微信的模板消息功能。在一開 ...
接下來的幾篇小豬將圍繞模板消息推動(dòng)的功能分別向讀者介紹小程序的幾個(gè)功能
今天要介紹的是獲取formId
在回答這個(gè)問題之前先簡(jiǎn)單的介紹下微信的模板消息功能。
在一開始,模板消息這個(gè)權(quán)限可不是所有都公眾號(hào)都有的,即使你已經(jīng)交了300塊完成了微信認(rèn)證。只有一些比較牛逼的企業(yè)例如說各個(gè)銀行,人家的需求是類似在每次有交易信息的時(shí)候通知用戶,這樣的功能簡(jiǎn)直不能太好,人家本來是通過短信通知的,現(xiàn)在通過微信就可以了,而且還不收費(fèi),走運(yùn)營商的短信接口可是需要大概一毛一條的。
所以這個(gè)權(quán)限是只有走內(nèi)部流程的。
大概是在13年底的時(shí)候微信向所有認(rèn)證的服務(wù)號(hào)開放了申請(qǐng)接口。這下模板消息這個(gè)功能就徹底開放出來了,每一個(gè)公眾號(hào)都可以發(fā)送自己的模板消息,用戶會(huì)在該公眾號(hào)的回話窗口看到模板消息。
可是小程序是沒有單獨(dú)的回話窗口的,要使用模板消息,那用戶收到的模板消息會(huì)在哪呢?
答案是在微信的單獨(dú)的一個(gè)“服務(wù)通知”回話框里。
可是如果每一個(gè)小程序都可以像公眾號(hào)那樣無限制的發(fā)送模板消息的話,那這個(gè)“服務(wù)通知”的會(huì)話框很快就會(huì)被占領(lǐng)。
所以必須有一定的限制小程序使用模板消息,微信目前的限制是在如下兩種情況下小程序才能夠正常的使用模板消息:
1. 在小程序內(nèi)使用了微信支付接口,
2. 在小程序里用戶點(diǎn)擊了表單,而且該表單的report-submit屬性值為true時(shí)。
在上述第二種情況下,小程序框架會(huì)給出一個(gè)formid,利用這個(gè)formId才能正常發(fā)送模板消息。
使用類似下面的代碼,注意表單的report-submit屬性。
// demo.wxml
<form bindsubmit="formSubmit" bindreset="formReset" report-submit = "true">
<view class="section section_gap">
<view class="section__title">checkbox</view>
<checkbox-group name="checkbox">
<label><checkbox value="checkbox1"/>checkbox1</label>
<label><checkbox value="checkbox2"/>checkbox2</label>
</checkbox-group>
</view>
<view class="btn-area">
<button formType="submit">Submit</button>
<button formType="reset">Reset</button>
</view>
</form>
然后在對(duì)應(yīng)的js文件里加上:
Page({
formSubmit: function(e) {
console.log('form發(fā)生了submit事件,fromId為:', e.detail.formId)
},
formReset: function() {
console.log('form發(fā)生了reset事件')
},
onLoad:function(){
console.log('sform load')
}
})
單機(jī)提交按鈕之后可以看到運(yùn)行結(jié)果:
form發(fā)生了submit事件,攜帶數(shù)據(jù)為: the formId is a mock one
因?yàn)槲覀兪窃贗DE中測(cè)試,所以得到的formId值為the formId is a mock one。在真機(jī)中我們可以得到一個(gè)具體的值,利用該值結(jié)合其他參數(shù)我們就可以發(fā)送模板消息啦。
下一篇小豬將使用flask結(jié)合mysql數(shù)據(jù)庫來做一個(gè)demo,把這個(gè)formId 存儲(chǔ)起來供下次使用。