JSON和JSONP之间有什么区别?

11 浏览
0 Comments

JSON和JSONP之间有什么区别?

例如,在jQuery文档中,我发现同时提到了JSON和JSONP。它们的区别是什么?我怎样才能知道哪个是哪个?应该在什么情况下使用哪个?PHP函数json_encode生成什么?

0
0 Comments

JSON和JSONP之间的区别是什么?

JSON是一种简单的数据格式。JSONP是一种在跨域ajax请求中使用该格式的方法,同时避免遇到同源策略的问题。基本上,这个想法是,不使用ajax请求JSON编码的数据,而是向页面中添加一个脚本标签,将数据作为JavaScript脚本加载,并回调到您的代码,告诉您“这是数据”。这是因为JavaScript脚本的“源”是文档的源,而不是脚本来自的位置,这意味着它可以访问您的代码以调用回调函数。

json_encode生成JSON数据。如果需要启用跨域调用,您可能会将json_encode作为提供系统JSONP接口的一部分使用。

另请参阅CORS,它可能会越来越多地用于此,但在IE中尚不完全支持(IE7及以下根本没有它;IE8具有它,但要求客户端代码执行特殊操作;Chrome、Firefox等都具有它,不需要客户端代码执行任何特殊操作)。

原因:JSONP是为了解决跨域ajax请求中的同源策略问题而提出的方法。它通过将数据以JavaScript脚本的形式加载到页面中,并通过回调函数将数据传递给调用方,绕过了同源策略的限制。

解决方法:使用JSONP可以实现在跨域ajax请求中获取数据,避免同源策略问题。通过将数据加载为JavaScript脚本并使用回调函数将数据传递给调用方,可以绕过同源策略的限制。

代码示例:

function handleData(data) {
  // 处理获取到的数据
}
var script = document.createElement('script');
script.src = 'http://example.com/data?callback=handleData';
document.body.appendChild(script);

0