JSONP原理:首先在客户端注册一个函数;然后把函数的名字传给服务器;接着服务器成JSON数据,并以Javascript语法的方式,将数据传入客户端注册的函数中;最后在客户端注册函数中接收JSON即可。 JSONP JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。</p> <p><strong>JSONP的由来</strong></p> <p>根据浏览器同源策略,所谓同源就是协议、主机、端口号都相同时成为同源。a 域的js不能直接访问 b域名的信息,但是script 标签的src属性可以跨域引用文件,jsonp是请求之后后台包装好一段json,并且把数据放在一个callback函数,返回一个js文件,动态引入这个文件,下载完成js之后,会去调用这个callback,通过这样访问数据。</p> <p><strong>JSONP有什么用?</strong></p> <p>由于同源从略的限制,XMLHttpRequest只允许请求前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后再服务端输出JSON数据并执行回调函数,从而解决跨域数据请求</p> <blockquote><p>推荐教程:《<a href="//m.sbmmt.com/js-tutorial.html" target="_blank">JS</a>》<br></p></blockquote>