0%

自己动手实现系列 ---- jsonp

前言

面试中时常会出现需要手动实现某个功能的要求,所以我准备整理一个自己动手实现系列文章,第一个呢就是自己动手实现 jsonp

实现 jsonp 思路

  1. 将传入的data数据转化为url字符串形式
  2. 处理url中的回调函数
  3. 创建一个script标签并插入到页面中
  4. 挂载回调函数

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// js代码

(function (window,document) {
"use strict";
var jsonp = function (url,data,callback) {
// 1.将传入的data数据转化为url字符串形式
// {id:1,name:'jack'} => id=1&name=jack
var dataString = url.indexof('?') == -1? '?': '&';
for(var key in data){
dataString += key + '=' + data[key] + '&';
};

// 2 处理url中的回调函数
// cbFuncName回调函数的名字 :my_json_cb_名字的前缀 + 随机数(把小数点去掉)
var cbFuncName = 'my_json_cb_' + Math.random().toString().replace('.','');
dataString += 'callback=' + cbFuncName;

// 3.创建一个script标签并插入到页面中
var scriptEle = document.createElement('script');
scriptEle.src = url + dataString;

// 4.挂载回调函数
window[cbFuncName] = function (data) {
callback(data); // 处理完回调函数的数据之后,删除jsonp的script标签
document.body.removeChild(scriptEle);
}
document.body.appendChild(scriptEle);
}
window.$jsonp = jsonp;
})(window,document)
如果觉得不错请支持作者
------ 版权声明 ------

本文标题:自己动手实现系列 ---- jsonp

文章作者:

发布时间:2020年01月09日 - 08:40

最后更新:2020年04月02日 - 03:20

原始链接:https://blog.lifesli.com/2020/01/09/do-it-yourselfery-jsonp/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。