JSONP是JSON with Padding的略称。它是一个 非官方 的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP简单的实现形式)。
同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。
<script>
标签的src
属性并不被同源策略所约束,所以可以获取任何服务器上脚本并执行。JSONP创建一个回调函数,然后在远程服务上利用
<script src=''></script>
调用这个函数并且将JSON 数据形式作为参数传递,完成回调。
将JSON数据填充进回调函数,这就是JSONP的JSON+Padding的含义。采用jquery的
$.ajax
时,dataType:'jsonp'
即可
$.ajax({
type: "get",
url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998",
dataType: "jsonp",
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(需要和服务器端约定,一般默认为:callback)
jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,jQuery会自动为你处理数据
success: function(json){
//如不写jsonpCallback,则可以在此处进行回调
},
error: function(){
}
});