vue封装jsonp

使用jsonp库封装jsonp请求

  // jsonp只能发送get请求
  import myJSONP from 'jsonp'
  
  // 封装的jsonp方法
  export default jsonp (url, data, options) {
	url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
	return new Promise((resolve, reject) => {
	  // url 需要跨域请求的服务器地址
  	  // options jsonp库的配置信息(如回调参数名 超时处理 回调函数前缀 回调函数名)
      // callback 回调函数
	  myJSONP(url, option, (err, data) => {
	  	if (!err) {
	  	  resolve(data)
	  	} else {
		  rejuect(err)
		}
	  })
	})
  }

  // 处理拼接参数
  export function param (data) {
	let url = ''
	for (let k in data) {
	  let val = data[k] !== undefined ? data[k] : ''
	  url += '&' + k + '=' + encodeURIComponent(val)
	}
	return url ? url.substring(1) : ''
  }
  // 业务代码如何使用封装好的jsonp方法
  import { jsonp } from 'common/jsonp'
  
  export function 方法名 () {
    const url = '接口地址'
    const data = '请求参数'
	const options = 'jsonp配置(可以通过一个公共文件进行配置)'
	return jsonp(url, data, options)
  }

你可能感兴趣的:(vue封装jsonp)