什么是JSONP

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的<script> 元素是一个例外。利用 <script> 元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON 资料,而这种使用模式就是所谓的 JSONP。用 JSONP 抓到的资料并不是 JSON,而是任意的JavaScript,用 JavaScript 直译器执行而不是用 JSON 解析器解析。

通俗的来说,如果你有一个脚本,想直接爬取别人网站的数据,这时,你使用json来请求别人网站的数据时,别人网站如果设有过滤器或者拦截器,就会认为你这是跨域,从而拒绝你的数据请求,而JSONP就是为了破解应用跨域访问的一个技术。

JSONP原理

1、jsonp是使用方法回调的原理:在网页里,你如果引入其他网页的js,那这个页面的js是可以调用你网页的代码的

2、直接请求js 和 请求的动态页面(jsp,php,aspx)里输出的javascript代码 效果一样

JSONP用法

在JQuery中用法如下

$.ajax({
	url: "http://www.baJson.com/student",
	type: "POST",
	//post请求方式
	dataType: "jsonp",
	jsonp: "callback",
	success: function(data) {
		var result = JSON.stringify(data);
		alert(result);
	}
});