ajax跨域请求'HTTPS://'报'invalid POST data'
今天在做微信摇一摇的时候请求的接口都报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));
}
})
// 2015.12.28 17:02补充
现在改成服务端请求了,结果返回parse json failed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
找到原因了,换成服务请求了,然后请求微信的接口必须是
json
串才行~在浏览器不允许跨域请求数据的,我记得用jsonp的方式好像还需要一个callback的吧?也就是要传一个回调函数名,并且微信那边提供跨域支持
jsonp
的话 那就没法post
!使用jsonp
不要直接跨域请求。
前端ajax直接请求到自己的后台服务器,然后后台服务器再去请求微信的系统,自己的服务器做一次中转就好了。
不要直接在前端提交到微信服务器。
post用jsonp也不行!要不你就在你服务提供者动手..要不你就nginx反向代理.假装在同域..或者自写服务中转.不过没有nginx方便
Jsonp 请求是无法使用POST 方法的!即使你指定为post, 现在报错 无法格式化成 json 说明数据是返回了的!
首先jsonp是不支持post,其次js跨域访问数据需要服务端的支持:即服务端响应jsonp,或者在response中添加 Access-Control-Allow-Origin 的header,所以如果是调用微信接口的话,js是无法调用的!
貌似直接ip地址会有跨域的问题。有域名应该就可以了。