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) : ''
}

 

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) : ''
}