最近在做一个页面需要用异步获取数据,接口需要传递参数才能拿到数据!
考虑过vue,angular...什么的,想了想,就一个分享的单页面懒得用这些框架了,就用jquery算了!
但是...怎么都拿不到数据,提示404错误(服务端做了跨域处理)
报错:
再贴下代码:
$.ajax({
url:'https://xxx.xxxx.com/api/homes/search/p/1',
data:{keyword:123},
type:'POST',
dataType:'jsonp',
jsonp:"jsonpcallback",
async:true,
cache:false,//缓存数据
beforeSend:function(){
console.log('数据拉取中...')
},
success:function(res){
console.log(res);
},
error:function(err){
console.log(err)
},
complete:function(XMLHttpRequest, textStatus){
console.log('数据加载完成')
}
})
再上面的报错信息中我们也看到了,就是写的是post方式,其实最终都是用的get方式传递的
所以你即使设置为POST,datatype为jsonp时 POST请求同样会被转化成GET。
难道是JSONP不支持POST方式发起请求吗?
找到这篇文章:http://www.nowamagic.net/librarys/veda/detail/224
从文中可以看出,其实使用特殊的方法也是可以支持POST的,不过太过繁琐。作者举的例子为:动态创建iframe方式POST跨域。
我想说的是,如果要想支持POST方式的JSONP很难,咱就别难为自己了,大不了和后台打一架也要把接口改了