jsonp 实现原理与jquery实例

前端实现

为了实现跨域请求,jsonp使用script标签进行请求。后台返回的数据并不是一个纯粹的json数据,实际上是一个函数调用。

以jquery为例,

jquery把jsonp封装到ajax中,实际上并不是真正的ajax请求,只是方便调用。

增加两个属性jsonp, jsonpCallback,这两个属性jquery会设置默认值

jsonp默认值为callback, jsonpCallback默认值是一个动态的随机字符串。再下发请求时,会把这两个值追加到url的后面,比如你的ajax代码如下:

$.ajax({

url: "http://yourdomain/jsonp/data.json",

dataType:'jsonp',

jsonp: 'callback',

jsonpCallback: 'onGetJsonpData'

}

浏览器发送请求的实际url为:http://yourdomain/jsonp/data.json?callback=onGetJsonpData。其中callback是jsonp后面的值,onGetJsonpData是jsonpCallback的值


后台实现

后台代码的处理与普通的json数据也是有区别的,需要获取这两个参数,返回如下格式的数据:

onGetJsonpData({data:'test'});

其中onGetJsonpData是从URL参数中获取的callback的值

实际上就是调用一个JS函数,把取到的数据传给这个函数,所以说,这里的数据可以是任意格式的数据,但一般使用json数据更灵活,更易被接受


详细的例子网上有很多,就不在这里列举了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值