首页 > Web开发 > 详细

jsonp 简单封装

时间:2019-04-20 16:54:58      阅读:146      评论:0      收藏:0      [点我收藏+]
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) : ‘‘
}

 

jsonp 简单封装

原文:https://www.cnblogs.com/qq-944286441/p/10741366.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!