JSONP的诞生、原理及应用实例

2018-10-29  本文已影响1人  persistlu

来自:https://www.cnblogs.com/LiveWithIt/p/JSONP.html

问题:

页面中有一个按钮,点击之后会更新网页中的一个盒子的内容。

Ajax可以很容易的满足这种无须刷新整个页面就可以实现数据变换的需求。

但是,Ajax有一个缺点,就是他不允许跨域请求资源。

如果我的代码在codepen上,我不能将我的数据放到codepen网站上,那么我只能放到我自己的服务器中,这样的话,就无法通过Ajax访问到这个数据了。

解决:

想要实现这种跨域资源请求,有很多解决办法,列举出一部分:

让服务器来加载远程数据,然后在用户请求时提供给浏览器。

用<script>或是<iframe>标签加载外来文件。(因为他们的src属性允许获得任何地方的资源。)

W3C制定的Cross-Origin Resource Sharing(CORS,跨域资源共享)。

JSONP

JSONP的诞生及原理:

jsonp的原理其实和第二种解决方法一模一样,只不过他更加方便,然后这种跨域沟通的手段就被赋予了一个名字“JSONP”。

所以首先要弄懂第二种方式是怎么工作的:

原理:如果一个页面加载了一个外来的JS文件,浏览器就会自动执行这个文件中的代码。

所以假如localhost想要使用jsonhost上面的一个JSON数据,localhost就可以让jsonhost来帮他完成这件事情,jsonhost提供给他一个js文件,往要调用的函数中传入需要的数据,结果是和localhost自己调用函数的效果一模一样了。

jsonhost:

var json='["customername1","customername2"]';

callbackFunction(json);

localhost:

var json='["customername1","customername2"]';

callbackFunction(json);

function callbackFunction(result)      {varhtml = '

上一篇下一篇

猜你喜欢

热点阅读