JSON和JSONP之间有什么区别?
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);