ajax跨域请求'HTTPS://'报'invalid POST data'

十木
  • 3.6k

今天在做微信摇一摇的时候请求的接口都报invalid POST data不知为啥

微信的批量查询页面统计数据接口:

接口调用请求说明:

http请求方式: POST(请使用https协议)
https://api.weixin.qq.com/shakearound/statistics/pagelist?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:
{    
     "date": 1425139200,        
     "page_index":1
}

这是我的请求:

$.ajax({
    type: 'POST',
    url: 'https://api.weixin.qq.com/shakearound/statistics/devicelist?access_token=<?php echo $ak; ?>',
    data: {
      "date": 1451199351423,
      "page_index": 1
    },
    dataType: 'jsonp',
    success: function(data) {
      alert(JSON.stringify(data));
    }
  })

clipboard.png

// 2015.12.28 17:02补充
现在改成服务端请求了,结果返回parse json failed.

回复
阅读 15.9k
9 个回答
✓ 已被采纳

找到原因了,换成服务请求了,然后请求微信的接口必须是json串才行~

在浏览器不允许跨域请求数据的,我记得用jsonp的方式好像还需要一个callback的吧?也就是要传一个回调函数名,并且微信那边提供跨域支持

jsonp的话 那就没法post!

不要直接跨域请求。
前端ajax直接请求到自己的后台服务器,然后后台服务器再去请求微信的系统,自己的服务器做一次中转就好了。
不要直接在前端提交到微信服务器。

post用jsonp也不行!要不你就在你服务提供者动手..要不你就nginx反向代理.假装在同域..或者自写服务中转.不过没有nginx方便

Jsonp 请求是无法使用POST 方法的!即使你指定为post, 现在报错 无法格式化成 json 说明数据是返回了的!

首先jsonp是不支持post,其次js跨域访问数据需要服务端的支持:即服务端响应jsonp,或者在response中添加 Access-Control-Allow-Origin 的header,所以如果是调用微信接口的话,js是无法调用的!

貌似直接ip地址会有跨域的问题。有域名应该就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏