VUE2.0中Jsonp的使用方法


Posted in Javascript onMay 22, 2018

本文主要介绍的是在VUE2.0Jsonp的使用方法,通过github引入jsonp和promise封装,实现跨域获取数据。

1.JSONP的用途和原理

使用JSONP主要是目的通过动态创建Script,动态拼接url,进而抓取数据,实现跨域。确切地说,AJAX请求由于同源影响,是不允许进行跨域请求的,而Script标签src属性中的链接却可以访问跨域的js脚本,利用这一特性,服务端不再返回JSON格式的数据,而是返回一段调用某个函数的JS代码,在src属性中进行调用,实现跨域。

2.JSONP的使用方法

2.1 引入github的jsonp

打开项目>package.json>在”dependencies”下添加代码

"jsonp": "^0.2.1"

VUE2.0中Jsonp的使用方法

如图所示,然后执行安装cmd指令,并重新运行项目

npm install 
 npm run dev

2.2 封装jsonp.js

import originJSONP from 'jsonp'
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) : ''
}

目录结构如下:

VUE2.0中Jsonp的使用方法

2.3 jsonp.js的API调用

在src的文件夹下创建api文件夹,用于储存api调用的js,新建config.js和recommend.js两个文件。

config.js
export const commonParams = {
 g_tK: 5381,
 inCharset: 'utf-8',
 outCharset: 'utf-8',
 notice: 0,
 format: 'jsonp'
}
export const options = {
 param: 'jsonpCallback'
}
export const ERR_OK = 0
recommend.js
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' //此处的url可以自行修改,本文是qq音乐链接
 const data = Object.assign({}, commonParams, {
 platform: 'h5',
 uin: 0,
 needNewCode: 1
 })
 return jsonp(url, data, options)
}

目录结构如下:

VUE2.0中Jsonp的使用方法

2.4 recommend.vue文件调用

在项目目录下的src>components>recommend>对应的文件.vue

recommend.vue

<template>
 <div class="recommend">
  recommend
 </div>
</template>
<script type="text/ecmascript-6">
import {getRecommend} from 'api/recommend'
import {ERR_OK} from 'api/config'
export default {
 name: 'recommend',
 created() {
 this._getRecommend()
 },
 methods: {
 _getRecommend() {
  getRecommend().then((res) => {
  if (res.code === ERR_OK) {
   console.log(res.data.slider)
  }
  })
 }
 }
}
</script>

2.5 页面jsonp请求成功结果

VUE2.0中Jsonp的使用方法

以上为vue2.0 jsonp简单使用方式,实例下载链接

总结

以上所述是小编给大家介绍的VUE2.0中Jsonp的使用方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript-Mozilla和IE中的一个函数直接量的问题分析
Aug 12 Javascript
Javascript的getYear、getFullYear、getUTCFullYear异同分享
Nov 30 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
javascript递归回溯法解八皇后问题
Apr 22 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
JavaScript中关键字 in 的使用方法详解
Oct 17 Javascript
angular学习之从零搭建一个angular4.0项目
Jul 10 Javascript
微信小程序点击item使之滚动到屏幕中间位置
Mar 25 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 Javascript
VUE中setTimeout和setInterval自动销毁案例
Sep 07 Javascript
mpvue构建小程序的方法(步骤+地址)
May 22 #Javascript
基于mpvue的小程序项目搭建的步骤
May 22 #Javascript
安装vue-cli的简易过程
May 22 #Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 #Javascript
Vue单页及多页应用全局配置404页面实践记录
May 22 #Javascript
Vue页面骨架屏的实现方法
May 22 #Javascript
Angular网络请求的封装方法
May 22 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
JS日历 推荐
2006/12/03 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
js实现鼠标经过表格行变色的方法
2015/05/12 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
Python中数字以及算数运算符的相关使用
2015/10/12 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python可以用来做什么
2020/11/23 Python
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
便利店投资创业计划书
2014/02/08 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
golang 比较浮点数的大小方式
2021/05/02 Golang
三星 3nm 芯片将于第二季度开始量产
2022/04/29 数码科技