加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsonp 简单封装

发布时间:2020-12-16 18:41:29 所属栏目:百科 来源:网络整理
导读:import originJSONP from ‘jsonp‘ // 引入 jsonp 模块 // 对外暴露方法 jsonp // 通常传给服务端的 url 地址带参数 设计目的是希望有纯净的 url 参数通过 data 拼在 url 上面 export default function jsonp(url,data,option) { // url 没有 ‘?‘ 时需要
import originJSONP from ‘jsonp‘  // 引入 jsonp 模块

// 对外暴露方法 jsonp 
// 通常传给服务端的 url 地址带参数 设计目的是希望有纯净的 url 参数通过 data 拼在 url 上面
export default function jsonp(url,data,option) {
  // url 没有 ‘?‘ 时需要加 ‘?‘
  url += (url.indexOf(‘?‘ < 0 ? ‘?‘ : ‘&‘) + param(data))

  // 返回 promise 
  return new Promise((resolve,reject) => {
    // 调用引入的 jsonp 模块 originJSONP
    originJSONP(url,option,(err,data) => {
      // err 如果不是 null 表示成功的
      if (!err) {
        resolve(data)
      } else {
        reject(err)
      }
    })
  })
}

// data 是一个对象 封装 data 使它遍历后放入 url 中
function param(data) {
  let url = ‘‘
  // 通常 data 是一级的对象
  for (var k in data) {
    // 有时候 data 的值为 undefined
    // 所以不能直接加在 url 上面 设置 data 的值为 undefined 时设置为空
    let value = data[k] !== undefined ? data[k] : ‘‘
    // ES6 语法
    url += `&${k}=${encodeURIComponent(value)}`
  }
  // 如果 url 有 data 需要把第一个 & 删除 如果没有返回空
  return url ? url.substring(1) : ‘‘
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读