微信jssdk中请求得到access_token遇到跨域问题,改写为jsonp,报错

微信jssdk中请求得到access_token遇到跨域问题,改写为jsonp,
报错Uncaught SyntaxError: Unexpected token :

clipboard.png

            $.ajax({
                url: "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=ID&secret=secret",
                type: "get",
                dataType: "jsonp",
                jsonp: "callback",
                jsonpCallback:"jsonpCallback",
                beforeSend:function(){
                    console.log('努力查询中,请稍后');
                },
                success: function (data) {
                    console.log(data);
                },
                error: function () {
                    console.log("系统错误")
                }
            });

console下报错

clipboard.png

点进去可以看到数据

clipboard.png

请问怎么解决呢? 在线等!!!!!!!!!!!!!!!!!!!1

阅读 9.3k
3 个回答

补补基础吧,并不是把不支持跨域的接口的请求方式改成jsonp,这个接口就能跨域了。jsonp也是需要服务端支持的。再说请求微信的access_token都是在后端做的,哪有放在前端的。

至于为什么在network里可以看到请求的响应内容,因为jsonp就相当于在页面里用<script src>的方式引入js,script引入是没有跨域限制的,但是你引入的这个脚本根本不是jsonp,所以你代码里拿不到响应内容的。

新手上路,请多包涵

是后台返回的json格式的问题,应该是jsonpCallback({"键值对"}),函数名和后台的要一致的,参考:http://blog.csdn.net/guang730...
昨天晚上正好遇到这个问题,搞了很晚才搞定

  1. jsonp需要服务端配合才可以
  2. 微信不推荐在浏览器端获取access_token,会带来以下问题:

    1. 每个浏览器打开之后都会获取一次,用户量一多,该API由于超过调用次数被微信停掉
    2. appid和secret泄漏
    3. 无法统一缓存access_token
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题