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 主动派发事件总结
Aug 09 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
JS实现从表格中动态删除指定行的方法
Mar 31 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
你知道setTimeout是如何运行的吗?
Aug 16 Javascript
Vue表单实例代码
Sep 05 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
JS 组件系列之BootstrapTable的treegrid功能
Jun 16 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
Jan 12 Javascript
详解angularjs 学习之 scope作用域
Jan 15 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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
我的论坛源代码(二)
2006/10/09 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
javascript 学习之旅 (1)
2009/02/05 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
2012/05/23 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
vue如何在项目中调用腾讯云的滑动验证码
2020/07/15 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
[52:32]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第三场 11.18
2020/11/18 DOTA
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
2017/06/16 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
信息工程学院毕业生推荐信
2013/11/05 职场文书
简历中的自我评价范文
2014/02/05 职场文书
三方合作意向书范本
2015/05/09 职场文书
欠条样本
2015/07/03 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
Go语言读取txt文档的操作方法
2022/01/22 Golang