深入了解jsonp

来源:luqidong 发布时间:2014-04-09 20:22:03 点击数:
jsonp实际上不是太复杂...
比如你在域abc.com ,并且你想使一个请求域xyz.com 。要做到这一点,你需要跨域,在大多数浏览器都是禁止的。在一个项目里,绕过这个限制是<script>标记。当您使用script标签,可以忽略域的限制,但在正常情况下,你不能对结果进行任何操作。
使用JSONP 。当你让你的请求到服务器已启用JSONP ,你通过一个特殊的参数,它告诉服务器你的网页。这样一来,服务器能够很好地包裹它的响应的方式,你的页面可以处理。
例如,假设服务器需要一个被称为“callback”的参数,使其JSONP能力。那么您的申请将如下所示:
http://www.xyz.com/sample.aspx?callback=mycallback
如果没有JSONP ,这可能会返回一些基本的JavaScript对象,就像这样:
{ foo: 'bar' }
然而,随着JSONP ,当服务器收到了“回调”参数,它包装起来的结果有点不同,返回的是这样的:
mycallback ( { foo: 'bar' }) ;
正如你可以看到,它现在将调用指定的方法。所以,在你的页面中,您可以定义回调函数:
mycallback =function(data) {
  alert( data.foo ) ;
} ;
而现在,当脚本被加载时,它会被动态加载,你的函数将被执行。
另外值得一提的使用JSONP的一个主要问题:你失去了很多请求的控制权。例如,没有什么好的方式来获得正确的故障代码回来。作为一个返回结果,你最终使用计时器来监视请求等,这始终是一个有点怀疑。该命题JSONRequest是一个伟大的解决方案,以允许跨域脚本编写,维护安全,并允许请求的适当控制。
本文由免费oa系统78oa原创,转载请注明出处。