1、什么是jsonp?
JSON with Padding : 是json的一种使用模式,可以让网站从别的域名获取资料,即跨域获取数据。
jsonp是一种非正式的传输协议。
2、为什么要使用jsonp?
受同源策略的限制,不同协议、域名、端口的网站不能相互访问页面信息和数据。
3、jsonp核心原理:
目标页面回调本地页面的方法,并传入参数。
4、json和jsonp的区别?
json是一种轻量级的数据交换格式,而jsonp是数据的(跨域)获取方式。
5、jsonp跨域原理:
在同源策略的限制下,在某个服务器下的页面无法获取到服务器意外的数据,但img、iframe、script等标签可以通过src属性请求到其他服务器下的数据。利用script标签的开放策略,可以实现跨域请求数据,但这也需要服务器的配合。
当正常地请求一个JSON数据的时候,服务端返回的是一串JSON类型的数据,而使用JSONP模式来请求数据的时候,服务端返回的是一段可执行的JavaScript代码。
6、在jQuery中如何通过JSONP来跨域获取数据?
1)在ajax函数中设置dataType为'jsonp'
eg:
$.ajax({
$.ajax({
dataType: 'jsonp',
url: 'http://www.a.com/user?id=123',
success: function(data){
//处理data数据
}
});
2)利用getJSON来实现,只要在地址中加上callback=?参数即可
eg:
$.getJSON('http://www.a.com/user?id=123&callback=?', function(data){
//处理data数据
});