在vue中使用jsonp跨域访问数据

1.首先在src目录下建立一个api目录,下面建立cofing.js和recommend.js文件,在config.js文件中是一些跨域访问的参数:

export const commonParams = {
    source: 'wap' //访问时的公共参数
}
export const options = {
    param: 'callback'
}
export const ERR_OK = 0;  //访问成功时的状态码

2.在recommend.js下:

import jsonp from '../common/js/jsonp';
import { commonParams, options } from './config';

export function getRecommend() {
    const url = 'http://www.yinyuetai.com/mv/get-bigpic'; //跨域请求的地址

    const data = Object.assign({}, commonParams, {
        platfrom: 'h5'
    });

    return jsonp(url, data, options);
}

3.在webpack.base.conf.js文件中配置文档入口(module.export中的resolve的alias中配置):

'api': resolve('src/api')

4.在需要使用数据的组件中(recommend.vue):

<script>
import {getRecommend} from '../../api/recommend';
import {ERR_OK} from '../../api/config'
export default {
    created() {
      this._getRecommend();
    },
    methods: {
      _getRecommend() {
        getRecommend().then((res) => {
          console.log(res.bigPics);
        });
      }
    }
}
</script>



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Vue时,如果后端接口地址和前端Vue应用地址不在同一个名下,就会出现问题。为了解决这个问题,可以采用以下几种方法: 1. 在后端接口设置允许访问的响应头 在后端接口代码,设置响应头Access-Control-Allow-Origin为前端Vue应用地址,例如: ``` header('Access-Control-Allow-Origin: http://localhost:8080'); ``` 这里的'http://localhost:8080'就是前端Vue应用的地址,设置了该响应头后,前端Vue应用就可以访问后端接口了。 2. 使用代理服务器解决问题 在Vue应用的配置文件,可以通过配置代理服务器来解决问题。例如: ``` module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } } } } ``` 这里的'/api'是前端Vue应用请求的接口地址,'http://localhost:3000'是后端接口的地址,配置了代理服务器后,前端Vue应用就可以通过访问'/api'来请求后端接口了。 3. 使用JSONP解决问题 JSONP是一种解决方案,它通过动态创建script标签来实现请求。在Vue可以使用VueJsonp插件来实现JSONP请求。例如: ``` import Vue from 'vue' import VueJsonp from 'vue-jsonp' Vue.use(VueJsonp) Vue.jsonp('http://localhost:3000/api', {}).then((response) => { console.log(response) }).catch((error) => { console.log(error) }) ``` 这里的'http://localhost:3000/api'是后端接口地址,使用VueJsonp插件可以发送JSONP请求获取后端接口数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值