解決微信端公衆號網頁獲取短信驗證碼ajax重複調用兩次的問題

問題背景介紹:前端

微信公衆號網頁開發的時候,點擊發送短信驗證碼,若是響應時間超長,目前測試是10秒左右(這個10秒左右,是我本身屢次測試總結出來的規律)java

超過10秒左右,就會自動請求第二遍,這個問題挺噁心。上網搜了搜,發現也有不少小夥伴遇到這個問題了,好比下面這位:web

https://blog.fishlee.net/2016/07/07/double-request-from-wechat-client-with-ajax/ajax

接着上面這個小夥伴的說,我和後端java小夥伴問了一下,搞出了一個方案,我這邊微信前端ajax 請求的時候,發送一個uuid ,後端

也就是說ajax 異步調用發送短信驗證碼接口的時候,上傳參數加一個uuid,而後java後端接收這個參數,留着作判斷用。往下看...微信

這個是個字符串,挺複雜的,實現方法以下:dom

 1         getUuid: function(){
 2             var len=32;//32長度
 3             var radix=16;//16進制
 4             var chars='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
 5             var uuid=[],i;
 6             radix=radix||chars.length;
 7             if(len){
 8                 for(i=0;i<len;i++)uuid[i]=chars[0|Math.random()*radix];
 9             } else {
10                 var r;uuid[8]=uuid[13]=uuid[18]=uuid[23]='-';uuid[14]='4';
11                 for(i=0;i<36;i++){
12                     if(!uuid[i]){
13                         r=0|Math.random()*16;uuid[i]=chars[(i==19)?(r&0x3)|0x8:r];
14                     }
15                 }
16             }
17             return uuid.join('');
18         }

 

 

解決思路:上傳上面的這個uuid,而後在java後端那邊存起來,若是調用了微信服務端偷着給調用了第二次請求,比對一下這個uuid的值,微信偷着給第二次請求的時候,這個uuid 確定是同樣的,而後java端判斷,若是uuid同樣的話,就在java端,睡眠掉第二個請求進程,保留第一個;異步

這樣第一個就會繼續,也會返回成功了。具體java代碼,我也不會寫,我只是個web前端er。測試

好了,思路就是這樣。ui

相關文章
相關標籤/搜索