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


問題背景介紹:

微信公眾號網頁開發的時候,點擊發送短信驗證碼,如果響應時間超長,目前測試是10秒左右(這個10秒左右,是我自己多次測試總結出來的規律)

超過10秒左右,就會自動請求第二遍,這個問題挺惡心。上網搜了搜,發現也有很多小伙伴遇到這個問題了,比如下面這位:

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

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

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

這個是個字符串,挺復雜的,實現方法如下:

 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。

好了,思路就是這樣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM