JSON和JSONP有什么区别?

时间:2010-06-13 16:20:52

标签: php jquery json jsonp

  

可能重复:
  Please explain JSONP

例如,在jQuery文档中,我发现了JSON和JSONP。有什么区别?我怎么知道哪个是哪个?哪一个应该用于什么?

PHP函数json_encode生成了什么?

1 个答案:

答案 0 :(得分:6)

JSON是一种简单的数据格式。 JSONP是一种将此格式与跨域ajax请求一起使用而不会遇到Same Origin Policy问题的方法。基本上,我们的想法是,不是使用ajax来请求JSON编码的数据,而是在页面中添加脚本标记,将数据作为JavaScript脚本加载,并对代码进行回调,说“这是数据”。这是因为应用于JavaScript脚本的“origin”是文档的起源,而不是脚本的来源,这意味着它可以访问您的代码以调用回调。

json_encode生成JSON。如果您需要启用跨域调用,则可以使用 json_encode作为向系统提供JSONP接口的一部分。

另请参阅CORS,这可能越来越多地用于此,因为我们继续前进,但在IE中尚未得到很好的支持(IE7及以下根本没有它; IE8有但是要求客户端代码执行特殊操作; Chrome,Firefox等具有此功能,并且不需要客户端代码执行任何特殊操作。)