如何用jsonp获取轮播图组件的数据
关于jsonp的相关介绍可以看我写的这篇文章https://www.jianshu.com/p/c977275a8a97
在这个项目里我们首先添加jsonp依赖:"jsonp": "0.2.1"
然后npm install
[src/common/js/jsonp.js]中封装jsonp.js文件:
import originJSONP from 'jsonp'
//url 通用url data url其他参数 option对应jsonp API中的option
export default function jsonp(url, data, option) {
url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)//链接合并的方法
return new Promise((resolve, reject) => {
originJSONP(url, option, (err, data) => {
if (!err) {
resolve(data)
} else {
reject(err)
}
})
})
}
//其他参数合并函数
function param(data) {
let url = ''
for (var k in data) {
let value = data[k] !== undefined ? data[k] : ''
url += `&${k}=${encodeURIComponent(value)}`
}
return url ? url.substring(1) : ''
}
因为是在recommend组件中调用jsonp方法,所以
3.轮播图数据的抓取:
1、抓取数据用到的公共数据参数的封装:
export const commonParams = {
g_tk: 1928093487,
inCharset: 'utf-8',
outCharset: 'utf-8',
notice: 0,
format: 'jsonp'
}
export const options = {
param: 'jsonpCallback',
prefix: 'jp'
}
export const ERR_OK = 0
2、轮播图数据的封装:
import jsonp from 'common/js/jsonp'
import {commonParams, options} from './config'
export function getRecommend() {
const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'
const data = Object.assign({}, commonParams, {
platform: 'h5',
uin: 0,
needNewCode: 1
})
return jsonp(url, data, options)
}
3、推荐页面轮播图数据的引入与轮播图组件的开发:
数据引入:
created() {
this._getRecommend()
},
methods: {
_getRecommend() {
getRecommend().then((res) => {
//ERR_OK 语义化
if(res.code === ERR_OK){
this.recommends = res.data.slider
}
})
}
轮播图组件: