jsonp返回的数据格式与普通json的区别?
其实我想问的是 [jsonp返回的数据格式] 与 [普通json] 的区别,而不是问jsonp与json的区别。当通过jsonp方式访问时, 服务器端传回一个数组时, 就不是标准的json格式了吧?
jsonp返回的数据格式与普通json的区别?
其实我想问的是 [jsonp返回的数据格式] 与 [普通json] 的区别,而不是问jsonp与json的区别。当通过jsonp方式访问时, 服务器端传回一个数组时, 就不是标准的json格式了吧?
jsonp其实返回的是一个JS函数调用代码,把返回的数据和客户端能调用的函数名拼接在一起,放到浏览器环境下,去执行而得到最终的服务端数据,也就是jsonp是一种json数据的传输方式而不是格式
而json是一个数据格式
例如
<script>
//预定义个全局函数
function _jsonp(resultData){
return resultData;
}
</script>
<script src="http://sxxxx.services/getList?p=yyyy"></script>
只要getList返回的内容为_jsonp({"a":"1234","b":9999});
那么客户端就能得到结果数据 {"a":"1234","b":9999}
就最终的结果来看,客户端获取的数据格式都是一样的
script 标签cdn 过来的文件本来就是针对 script 代码的,而 jsonp 就是利用这个特性和 script 不受同源策略额特点做的。即,经过 jsonp 返回的数据会被当作 script 代码执行。
jsonp是一种跨域方法
json单纯的是一种数据格式。
之所以很多人都会理解错误,是因为在jquery中都是datatype....
jsonp返回的其实是一个函数的调用,传入了一个参数,这个参数就是真正需要获取到的数据,而json就单纯的指代这个数据。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
解决了,是因为后端和前端没有统一使用标准的json回传格式,另外jquery的ajax方法需要配置
dataType: 'json'
。