2011-08-31 134 views
1

我似乎无法找到明确的答案 - JSONP中的p代表什么?到目前为止我找到的候选人是paddingprints。任何人都知道JSONP的名字来自哪里?JSONP中的'P'代表什么?

+0

可能的重复[什么是JSONP?](http://stackoverflow.com/questions/2067472/what-is-jsonp-all-about) –

回答

7

填充。

http://en.wikipedia.org/wiki/JSONP

JSONP或“JSON与填充”是在基座JSON数据 格式,使用的允许页面从 服务器在不同域中请求数据的图案的补充。 JSONP是对这个问题的解决方案, 形成了一种称为Cross-Origin 资源共享的更新方法的替代方案。 填充

尽管填充(前缀)典型地是在浏览器的执行上下文中定义的回调 函数的名称, 它也可以是一个变量赋值,if语句,或任何其他 的Javascript声明。对JSONP请求的响应(即,遵循JSONP使用模式的 请求)不是JSON,也不是将 解析为JSON;返回的有效载荷可以是任何任意的JavaScript表达式,并且它根本不需要包含任何JSON。但传统上,它是一个JavaScript片段,它调用某个JSON格式的数据调用功能 。

换句话说,JSONP的典型用途是通过在一个 函数调用中包装JSON负载,提供跨域 对现有JSON API的访问。

希望有所帮助。 Google获胜!

3

石头,

我知道,它代表'填充'。在Wikipedia上有关于它的解释:JsonP

它做什么?

它使您可以制作CROSS-DOMAIN请求并获取返回的JSON数据。 通常通过HTML 脚本标记您需要另一个JavaScript。

但JsonP为您提供了回调函数,您可以返回noraml Json响应。

例子:

您创建一个脚本标签:

  • <script type="text/javascript" scr="http://anotherDomain/Car?CarId=5&jsonp=GiveCarResponse"></script>

在这个脚本GiveCarResponse是其他域的回调函数。调用此函数将导致Json响应。在例如:

{"CarId":5, "Brand":"BMVV", "GAS": false}

这是否有道理?

0

它基本上意味着添加一个围绕JSON的调用函数。 AJAX只能从您自己的服务器调用,而不是跨域。因此,要从客户端的不同服务器加载数据,您需要提交JSONP请求,基本上您可以像加入普通JavaScript文件一样从其他服务器加载正常的JavaScript文件。胸围因为JSON不是一个有效的JavaScript文件,所以JSON被封装在一个函数调用中以使其成为有效的js文件。封装函数(已经在您的代码中)然后提取数据并将其显示在您的页面上。