现在在做一个H5的分享页面,用户通过点击分享的链接进入页面,现在要求用户在点击链接(每个链接的参数都不一样)时获取用户的openID,后台无法获取到code值,只能通过前端生成再传到后台,但是MVC只能通过后台controller到jsp页面。
我现在是通过controller到页面后,再通过jsp页面ready事件生成code,然后再通过ajax传到后台
var code = sessionStorage.getItem("code");//取出这次会话中session的值 if (code != null) { //通过ajax传到后台获取openId $.ajax({ async: false, type:'get', url:'getOpenId', dataType:'json', data : {'code' : code}, success:function(result){ alert("success!!!"); } })
}else{ window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx251314c46ac42181&redirect_uri="+encodeURIComponent(currurl)+"&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"; sessionStorage.setItem("code",getUrlParam("code"));//保存到这次会话的session中 } //正则匹配取URL中code的值 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); var r = location.href.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } |
但是这样做或刷新两次页面,用户体验很差,各位大佬有什么好的方案?请指点一下。。。