getJSON跨域传参失败
/*$.ajax({
type:"post",
url:path+'ws/wisdomclass/getBaseDataInfo?'+wisdomKey,
dataType:"jsonp",
success:function(json){
that.$Loading.finish();
that.isClassroomreview=json.ws_classroomreview;
}
});*/
$.getJSON(path+'ws/wisdomclass/getBaseDataInfo?callback='+wisdomKey,{id:'111'}, function(json, textStatus) {
console.log(json)
that.$Loading.finish();
that.isClassroomreview=json.ws_classroomreview;
});
最开始使用的getJSON
方法向后台请求接口,之前没有wisdomKey
这个参数,传参的时候一般都在url后面以这样的格式传参{id:'1111'}
,一切正常,但是后期需要在url后面添加wisdomKey
这个参数我发现getJSON
就不好用了,但是使用ajax
以上述格式书写却可以正常请求的数据,请问这是为什么呢?
PS:
(1)getJSON URL后面添加?callback=
可以实现跨域请求
(2)项目开始之前就跟后端沟通好了,所以不存在后端不支持的情况
(3)wisdomKey的值是sys_auto_authenticate=true&sys_token=20171114115229565011837222411089
(4)使用getJSON请求控制台的报错信息
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看了一下getJSON的源码
分析了一下,getJSON 在调用get的时候,第四个参数强制了'json',所以没有办法用getJSON来调用JSONP的,直接用 $.ajax吧
====更新分割线,原来是我误会楼主的意思了
jquery 的$.ajax 要害死多少人啊,
再说一次,简单的把 dataType:"jsonp", 改成这样是行不通的,
JSONP 和 JSON完全是两回事,
你把dataType改成 jsonp 也得要后端支持返回JSONP才行,不是简单的改个参数就可以了
我现在有点理解为什么 axios 不支持JSONP了
getJSON
是用get
方式发起一个dataType:json
的请求.dataType:jsonp
是用jsonp
发起一个请求.两者是不一样的.
jsonp
因为不存在跨域问题,所以能直接请求到. 但是getJSON
得先允许跨域了才能访问我这两天刚用了一下这个jq的jsonp,jsonp是用于get请求的,我看你是post请求, 其实直接参数中用
data: {test: 111}
来传参数就好了,正常已经能请求成功,如果有解析失败的情况,可能是后端不支持jsonp,后端返回格式应为 jsonp({ret: true})多说一句:?问号后面的参数一般用于
get
请求,除非你有特殊用途,post请求需要用data的方式传参,而且post
请求据我了解不支持jsonp