jsonp是怎么一回事?

来源:luqidong 发布时间:2014-01-12 19:15:10 点击数:

  一般人都知道什么是json,他是一种数据格式方便存储和记忆和提取,但是很少有人知道什么是jsonp。首先它实际上不是太复杂...说你是在abc.com ,并且你想使一个请求域xyz.com 。要做到这一点,你需要跨越域边界,在大多数browserland的一个禁忌。的一个项目,绕过这个限制是<script>标记。当您使用script标签,域限制被忽略,但在正常情况下,你真的不能对结果进行任何操作,脚本只是被评估。

输入JSONP 。当你让你的请求到服务器已启用JSONP ,你通过一个特殊的参数,它告诉服务器你的网页一点点。这样一来,服务器能够很好地包裹它的响应的方式,你的页面可以处理。
例如,假设服务器需要一个被称为“回呼”的参数,使其JSONP能力。那么您的申请将如下所示:
http://www.78oa.com/sample.aspx?callback=mycallback
如果没有JSONP ,这可能会返回一些基本的JavaScript对象,就像这样:
{ foo: 'bar' }
然而,随着JSONP ,当服务器收到了“回调”参数,它包装起来的结果有点不同,返回的是这样的:
mycallback({ foo: 'bar' });

正如你可以看到,它现在将调用指定的方法。所以,在你的页面中,您可以定义回调函数:

mycallback = function(data){
  alert(data.foo);
};

而现在,当脚本被加载时,它会被执行,你的函数将被执行。瞧,跨域请求!

另外值得一提的使用JSONP的一个主要问题:你失去了很多请求的控制权。例如,没有“好”的方式来获得正确的故障代码回来。作为一个结果,你最终使用计时器来监视请求等,这始终是一个有点怀疑。该命题JSONRequest是一个伟大的解决方案,以允许跨域脚本编写,维护安全,并允许请求的适当控制。