最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在vue中使用jsonp進行跨域請求接口操作

 更新時間:2020年10月29日 08:35:00   投稿:jingxian  
這篇文章主要介紹了在vue中使用jsonp進行跨域請求接口操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言:

這里我們使用的是第三方插件jsonp。

github網(wǎng)址:https://github.com/webmodules/jsonp

1、安裝

npm install jsonp -S

2、引入

一般新建一個js文件來引入原始jsonp插件,然后對原始插件進行封裝,對跨域接口參數(shù)的拼接,封裝好這個jsonp文件后export出去,之后在哪里用到就再在那里import。

1.新建jsonp.js文件來封裝原始jsonp插件

// 引入原始jsonp插件
import originJsonp from 'jsonp'
/*
 封裝原jsonp插件,返回promise對象
 url: 請求地址
 data:請求的json參數(shù)
 option:其他json參數(shù),默認直接寫空對象即可
*/
export default function jsonp (url, data, option) {
 url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)
 return new Promise((resolve, reject) => {
 // originJsonp中的參數(shù)說明可以到前言中的github中查看
  originJsonp(url, option, (err, data) => {
   if (!err) {
    resolve(data)
   } else {
    reject(err)
   }
  })
 })
}
/*
 封裝url參數(shù)的拼接
 */
function param (data) {
 let url = ''
 for (var k in data) {
  let value = data[k] !== undefined ? data[k] : ''
  // 防止參數(shù)為中文時出現(xiàn)亂碼,把字符串作為 URI 組件進行編碼
  url += `&${k}=${encodeURIComponent(value)}`
 }
 return url ? url.substring(1) : ''
}

3、使用

可以在專門請求接口的js文件夾中新建一個getCurrentCity.js文件來跨域獲取接口數(shù)據(jù)。

// 引入封裝好的jsonp
import jsonp from 'common/js/jsonp.js'
// 假設(shè)這里為跨域請求當前城市的接口
export function getCurrentCity () {
 // 接口地址
 let url = 'https://api.map.baidu.com'
 // 所需參數(shù)
 let datas = {
  'qt': 'dec',
  'ie': 'utf-8',
  'oue': 1,
  'fromproduct': 'jsapi',
  'res': 'api',
  'ak': 'QWilijLzYd6pCmTrHilAeWjbG41zMiXc'
 }
 return jsonp(url, datas, {})
}

4、最后在vue組件中取到接口數(shù)據(jù)

import {getCurrentCity} from 'common/apis/getCurrentCity.js'

export default {
 methods:{
  _getCurrentCity () {
   // 在這里就可以獲取到當前城市的接口數(shù)據(jù)了
    getCityCurrent().then((res) => {
     // 打印出獲取到的數(shù)據(jù)
     console.log(res)
    }).catch((err) => {
     console.log(err)
    })
   }
 },
 mounted () {
   this._getCurrentCity()
 }
}

補充知識:Vue中關(guān)于axios和jsonp的封裝

我就廢話不多說了,大家還是直接看代碼吧~

import qs from 'qs'
import axios from 'axios' 
 
 //攔截器
axios.interceptors.request.use(function (config) {
  console.log('正在發(fā)送請求哦...')//添加loading效果
  return config;
}, function (error) {
  return Promise.reject(error);
});
 
// Add a response interceptor
axios.interceptors.response.use(function (response) {
  console.log('請求成功啦...')
  return response;
}, function (error) {
  return Promise.reject(error);
}); 
 
const ajax={
	post:function(url,data={}){
		return new Promise((resolve,reject)=>{
			axios.post(url,qs.stringify(data)).then(function(res){
				resolve(res.data)
			}).catch(function(err){
				reject(err)
			})
		})
	},
	get:function(url,data={}){
		return new Promise((resolve,reject)=>{
			axios.get(url,{params:qs.stringify(data)}).then(function(res){
				resolve(res.data)
			}).catch(function(err){
				reject(err)
			})
		})
	},
}
export default ajax;

在main.js中

import ajax from './common/api/index.js'

Vue.prototype.$post=ajax.post Vue.prototype.$get=ajax.get

jsonp

import originJSONP from 'jsonp'
/*
jsonp(url,option,callbackFn)
{name:1,age:20}
www.aaa.com/? 
*/
export default function(url,data,option){
 url+=(url.indexOf('?')<0 ? '?' : '&' )+param(data);
 return new Promise(function(resolve,reject){
 originJSONP(url,option,function(err,res){
  if(!err){
   resolve(res);
  }else{
   reject(err)
  }
  })
 })
}
/*
{name='aa',age=20}
&name=aa&age=20
*/
function param(data){
 let url='';
 for(let key in data){
 let item =data[key]!==undefined ? data[key] : '';
 url+=`&${key}=${encodeURIComponent(item)}`
 }
 return url ? url:'';
 }

以上這篇在vue中使用jsonp進行跨域請求接口操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Vue實例生命周期(全面解析)

    基于Vue實例生命周期(全面解析)

    下面小編就為大家?guī)硪黄赩ue實例生命周期(全面解析)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • vue第一次獲取不到元素的解決方法記錄

    vue第一次獲取不到元素的解決方法記錄

    Vue.js雖然說是數(shù)據(jù)驅(qū)動頁面的,但是有時候我們也要獲取dom對象進行一些操作。這篇文章主要給大家介紹了關(guān)于vue第一次獲取不到元素的解決方法,需要的朋友可以參考下
    2021-06-06
  • vue:內(nèi)存泄露詳解

    vue:內(nèi)存泄露詳解

    這篇文章主要介紹了一個Vue的內(nèi)存泄露詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-10-10
  • element-ui?tree?手動展開功能實現(xiàn)(異步樹也可以)

    element-ui?tree?手動展開功能實現(xiàn)(異步樹也可以)

    這篇文章主要介紹了element-ui?tree?手動進行展開(異步樹也可以),項目中用到了vue的element-ui框架,用到了el-tree組件,需要的朋友可以參考下
    2022-08-08
  • 使用Vue.js 和Chart.js制作絢麗多彩的圖表

    使用Vue.js 和Chart.js制作絢麗多彩的圖表

    這篇文章主要介紹了使用Vue.js 和Chart.js制作絢麗多彩的圖表,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • Vue項目打包部署后瀏覽器自動清除緩存問題的解決方法

    Vue項目打包部署后瀏覽器自動清除緩存問題的解決方法

    這篇文章主要介紹了vue打包部署后 瀏覽器緩存問題,導致控制臺報錯ChunkLoadError: Loading chunk failed的解決方案,文中有相關(guān)的圖文和代碼供大家參考,具有一定的參考價值,需要的朋友可以參考下
    2024-12-12
  • ElementUI嵌套頁面及關(guān)聯(lián)增刪查改實現(xiàn)示例

    ElementUI嵌套頁面及關(guān)聯(lián)增刪查改實現(xiàn)示例

    本文主要介紹了ElementUI嵌套頁面及關(guān)聯(lián)增刪查改實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • vue?使用addRoutes動態(tài)添加路由及刷新頁面跳轉(zhuǎn)404路由的問題解決方案

    vue?使用addRoutes動態(tài)添加路由及刷新頁面跳轉(zhuǎn)404路由的問題解決方案

    我自己使用addRoutes動態(tài)添加的路由頁面,使用router-link標簽可以跳轉(zhuǎn),但是一刷新就會自動跳轉(zhuǎn)到我定義的通配符?*?指向的404路由頁面,這說明沒有找到指定路由才跳到404路由的,這樣的情況如何處理呢,下面小編給大家分享解決方案,一起看看吧
    2023-10-10
  • Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法

    Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法

    本文主要介紹了Vue+element使用row-class-name修改el-table某一行解決背景色無效的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Vue中設(shè)置背景圖片和透明度的簡單方法

    Vue中設(shè)置背景圖片和透明度的簡單方法

    在做項目的時候常需要設(shè)置背景圖片和透明度,下面這篇文章主要給大家介紹了關(guān)于Vue中設(shè)置背景圖片和透明度的簡單方法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-01-01

最新評論

安仁县| 沙雅县| 宁强县| 永年县| 香河县| 景泰县| 湖口县| 青阳县| 巴彦淖尔市| 利川市| 泰和县| 海城市| 肥西县| 道孚县| 南宫市| 宿松县| 牟定县| 平昌县| 芷江| 丰宁| 盐山县| 敖汉旗| 廊坊市| 原平市| 阿巴嘎旗| 鹤庆县| 泸西县| 赤城县| 彭州市| 姜堰市| 宁津县| 都江堰市| 读书| 肇源县| 卓尼县| 乐业县| 卓资县| 辽中县| 互助| 惠水县| 和林格尔县|