Jsonp(Json with Padding)
一、什么是Jsonp?
Jsonp 是一种解决跨域问题的方法,需要通过后端配合来完成。
二、实现原理
1、利用script标签进行资源请求不会受同源策略的限制,但script标签请求的资源会当成js代码来执行。
2、详细原理:
- 判断请求与当前页面的域,是否同源,如果同源则发送ajax,就没有跨域的事情了。
- 如果不同源,生成一个script标签
- 生成一个随机的callback名字
4、将用户传来的回调函数添加到window对象中,设置它属性名为callback名 - 设置script标签的src,设置为要请求的接口。
- 将callback作为参数拼接在后面。
以上为前端部分
- 后端接收到请求后,开始准备要返回的数据
- 后端拼接数据,将要返回的数据用callback的值和括号包裹起来
例如:callback = asc123456,要返回的数据为{“a”:1, “b”:2};
就要拼接为:asd23456({“a”:1, “b”:2}); - 将内容返回
以上是后端部分
- 浏览器接收到内容,会当作js代码来执行。
- 从而执行名为asd123456的方法。这样我们就接收到了后端返回给我们的对象
三、代码实现
var $ = {
ajax: function (options) {
var url = options.url;//获取目标url的域
var type = options.type;//请求方式
var dataType = options.dataType;