1、问题
今天测试公众号的扫码程序,发现安桌可用,但在IOS下,wx.config 和 wx.error 都不执行。
代码如下:
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>MiniRegistor</title> </head> <body> </body> </html> <script src="~/lib/jquery/dist/jquery.js"></script> <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript"> var link = location.href; $.ajax({ url: "@Url.Action("GetInfoMation", "Weixin")",//后台给你提供的接口 type: "Post", data: "{ 'url': '" + link + "' }", async: false, contentType: "application/json; charset=utf-8", dataType: "json", success: function (res) { var datad = JSON.parse(res.data); //转译为Json字符串 wx.config({ debug: false, appId: datad.appid, timestamp: datad.timestamp, nonceStr: datad.noncestr, signature: datad.signature, jsApiList: [ 'scanQRCode' ] }); wx.ready(function () { // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如需要在页面加载时就调用相关接口, // 则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不要放在ready函数中。 wx.scanQRCode({ needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果; 这里我们要处理扫码结果,所以一定要设为 1 scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有 success: function (res) { var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果 // 在这里我们就可以对 result 这个扫码结果做处理了 // 处理代码如下。。。 } }); }); wx.error(function (res) { alert(res); }); }, error: function (e) { alert(e.responseText); } }); </script>
2、问题分析
IOS下,wx.config 和 wx.error 都不执行,说明微信相关代码都没起作用。说明 jweixin-1.2.0.js 没有生效。
换了多个版本也没有生效。
3、问题解决
猜了一下 IOS对网络安全要求比较高,无法访问 http 的网站,于是换为 https 就能访问到 jweixin 库了。
---- 问题解决了。
贴上解决后的代码:
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>