欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在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使用axios圖片上傳遇到的問題

    Vue使用axios圖片上傳遇到的問題

    后端寫個上傳圖片的接口可不是很簡單,只需要讓這個字段限制為圖片格式,后臺做個保存的邏輯就完事了,前端處理還要牽扯到請求頭,數(shù)據(jù)格式的處理等等問題,按照老傳統(tǒng)把圖片按照字符串往接口put發(fā)現(xiàn)返回的全是400錯誤,直到我知道了前端的FormData方法!
    2021-05-05
  • 使用vue-route 的 beforeEach 實現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗證登錄)功能

    使用vue-route 的 beforeEach 實現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗證登錄)功能

    在網(wǎng)站中普遍會遇到這樣的需求,路由跳轉(zhuǎn)前做一些驗證,比如登錄驗證(未登錄去登錄頁)。下面腳本之家小編給大家?guī)砹耸褂胿ue-route 的 beforeEach 實現(xiàn)導(dǎo)航守衛(wèi)(路由跳轉(zhuǎn)前驗證登錄)功能,感興趣的朋友一起看看吧
    2018-03-03
  • Vue2模版編譯流程詳解

    Vue2模版編譯流程詳解

    vue中有一張響應(yīng)式系統(tǒng)的流程圖,vue會將模板語法編譯成render函數(shù),通過render函數(shù)渲染生成Virtual?dom,但是官方并沒有對模板編譯有詳細的介紹,這篇文章帶大家一起學習下vue的模板編譯
    2023-07-07
  • Electron-vue腳手架改造vue項目的方法

    Electron-vue腳手架改造vue項目的方法

    這篇文章主要介紹了Electron-vue腳手架改造vue項目的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vue項目中實現(xiàn)圖片預(yù)覽的公用組件功能

    vue項目中實現(xiàn)圖片預(yù)覽的公用組件功能

    小編接到查看影像的功能需求,根據(jù)需求,多個組件需要用到查看影像的功能,所以考慮做一個公用組件,通過組件傳值的方法將查看影像文件的入?yún)鬟^去。下面小編通過實例代碼給大家分享vue項目中實現(xiàn)圖片預(yù)覽的公用組件功能,需要的朋友參考下吧
    2018-10-10
  • 使用Vue.$set()或者Object.assign()修改對象新增響應(yīng)式屬性的方法

    使用Vue.$set()或者Object.assign()修改對象新增響應(yīng)式屬性的方法

    vue代碼中,只要在data對象里定義的對象,賦值后,任意一個屬性值發(fā)生變化,視圖都會實時變化,這篇文章主要介紹了使用Vue.$set()或者Object.assign()修改對象新增響應(yīng)式屬性,需要的朋友可以參考下
    2022-12-12
  • Vue中的生命周期介紹

    Vue中的生命周期介紹

    這篇文章介紹了Vue中的生命周期,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • Vue computed 計算屬性代碼實例

    Vue computed 計算屬性代碼實例

    在本篇文章里小編給大家分享的是關(guān)于Vue computed 計算屬性代碼實例,需要的朋友們可以參考下。
    2020-04-04
  • vue-cli腳手架引入圖片的幾種方法總結(jié)

    vue-cli腳手架引入圖片的幾種方法總結(jié)

    下面小編就為大家分享一篇vue-cli腳手架引入圖片的幾種方法總結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue中如何實現(xiàn)字符串換行

    Vue中如何實現(xiàn)字符串換行

    這篇文章主要介紹了Vue中如何實現(xiàn)字符串換行問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評論