1. 程式人生 > >axios跨域,及axios中this指向

axios跨域,及axios中this指向

安裝 

npm install axios --save-dev

  •  axios 不能直接在 main.js 中引入並 Vue.use(),只能每個需要傳送請求的元件中即時引入。
  • 兩種解決思路:一 修改原型鏈,二 axios+vuex 進行封裝

一.  main.js 中引入 axios 並且修改原型鏈:

import axios from 'axios'
​
Vue.prototype.$axios= axios

修改完成,axios的使用詳情請參考Axios 中文說明

二.  axios+vuex 進行封裝:

  1. vuex:一個專為 Vue.js 應用程式開發的狀態管理模式。也可以理解為一種開發模式或框架。
  2. 使用:在main.js引入store,注入。新建一個目錄store,….. export 。
  3. 場景:單頁應用中,元件之間的狀態。音樂播放、登入狀態、加入購物車。
  4. 屬性:五種,分別是 State、 Getter、Mutation 、Action、 Module。

懶得寫了,算了吧,,,,

vue cli腳手架介面跨域問題,開啟config/index.js 進行如下配置

//配置axios跨域
    proxyTable: {
    	'/api': {
        target: 'http://resource.onetuu.com/',//設定你呼叫的介面域名和埠號
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'
        }
      }  
    },

在相關元件中呼叫

this.$axios({
        method: 'get',
        url: '/api/userInfo',   
         //這裡的api為http://http://121.41.130.58:9090/ 指向http://localhost:8081
         //在本地除錯時沒有問題 但打包釋出時,刪除/api/
   	}).then((response) => {
          // this.answer = response.data.data;  
           console.log(response.data)
    }).catch(function(err){
         
    })

提出一個小問題,在使用axios得到請求結果後,在then的處理函式中,你需要使用箭頭函式才能正確使用this。

原本寫法,這種情況下,輸出this得到的’undefined’

axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

修改,利用箭頭函式的作用域,由上下文確定(也就是由外層呼叫者vue來確定)。this將指向Vue物件

axios.get('/user?ID=12345')
  .then((response)=>{
    console.log(response)
  })
  .catch(function (error) {
    console.log(error);
  });

相關推薦

axiosaxiosthis指向

安裝  npm install axios --save-dev  axios 不能直接在 main.js 中引入並 Vue.use(),只能每個需要傳送請求的元件中即時引入。 兩種解決思路:一 修改原型鏈,二 axios+vuex 進行封裝 一.  main.js 中

Vue開發上線過程遇到的坑(axioshistory模式下空白頁問題)

最近公司在用vue開發一個網站,在這過程中,遇到了一些需要注意的點,在此先列出來,防止下次再次踩坑 1.在開發環境下,使用axios進行資料互動時,如果遇到跨域問題的話,可以在如下圖 Config檔案下的index.js 設定proxy代理 你可以新建一個專門放介面

vue設定使用axios請求

在vue的時間開發過程中遇到比較頭疼的事情之一,就是在本地與非本地環境中的介面進行聯調。最常遇見的就是跨域問題,一把的解決方法有三種: 1. 後臺更改header(注:這是後臺的事,我們做不了) 2. 使用JQuery提供的jsonp  (注:只為了使用js

前端什麼是常見的解決方案(簡講)

一、認識跨域 1、同源 符合”協議+域名+埠”三者相同,就是同源 2、同源策略 同源策略,其初衷是為了瀏覽器的安全性,通過以下三種限制,保證瀏覽器不易受到XSS、CSFR等攻擊。 Cookie、LocalStorage 和 IndexDB 無

在Vue如何使用axios訪問數據(轉)

基本上 屬性 本地測試 original ogr 必須 內容 .com 內心 最近在項目中需要用到axios,所以就惡補一下這個axios到底是什麽東東。越來它是vue-resource的替代品,官網也說了,以後都用axios, vue-resource不在維護。那麽這

create-react-app創建react項目使用axios

資源 使用 ios https 問題 use 圖片 圖表 json 最近用react做項目練手,項目中調用接口有跨域問題,引用的插件是axios,react項目是用 create-react-app創建的,解決跨域問題可以後臺設置cros(跨域資源共享),如果前端解

nuxt-axios- 伺服器端渲染

今天在做專案中,遇到一個問題,在一個點選事件中利用axios發請求,出現了跨域問題,之前都是直接用的伺服器端渲染,然後就一直沒出現,還是解決了很久的,所以決定把問題及解決方案記錄下來。  tree.vue :         &nb

【原創】Vue.js axios 訪問錯誤

1、假如訪問的介面地址為 http://www.test.com/apis/index.php  (php api 介面)2、而開發地址為http://127.0.0.1:8080,當axios發起請求時,出現如下錯誤:Failed to load http://www.test.com/apis/

vue使用axios訪問實現問題分析

1、安裝axios npm -install axios 2、main.js引入axios 兩種方式,點選這裡檢視 3、在webpack配置檔案index.js中配置代理 var path = require('path') module.expo

在Vue如何使用axios訪問資料

最近在專案中需要用到axios,所以就惡補一下這個axios到底是什麼東東。越來它是vue-resource的替代品,官網也說了,以後都用axios, vue-resource不在維護。那麼這個axios怎麼用呢,上網搜尋了一大堆,基本上都是雷同,我也不知道那些作者有沒有在

vue-cli3.0 axios請求代理配置埠修改

1.安裝 axios vue add axios 2.專案根目錄下新建 vue.config.js // vue.config.js module.exports = { devServer:

解決 axios 傳送 post 請求變 options 的問題

前端:VUE 後端:django 前後端除錯時post請求,發現請求方式為options,服務端不接受,後查詢發現遇到大名鼎鼎的跨域問題。 跨域:協議、ip、埠只要前後端有一個不一樣就會出現跨域問題。瀏覽器會嘗試向後端傳送option請求->想後端詢問是否支援從前端的這個域名發起跨

Vue專案關於axios的設定

在config資料夾中的index.js檔案我們要將proxtTable選項設定。引數如下 proxyTable: { '/api': { target: 'http://192.168.1.xxx:80', // 資料介面 changeOrigin:

Vue專案設定axios不成功的一個小問題( Vue CLI3請求Vue proxyTable配置Access-Control-Allow-Origin )

Vue專案,因為前後端分離,所以在請求後端介面時,時常遇到跨站問題, 2、如果前後端部署在同一個域名,就不會有跨域問題,但一般是生產環境部署是同一個域名下,但在開發環境時,並不是同域名呀,所以開發時呼叫介面返回類似“No 'Access-Control-Allow-Or

知乎日報專案vue專案裡出現axios問題 (已解決)

1,axios用法   轉自 https://www.cnblogs.com/wisewrong/p/6402183.html 方案一:改寫原型鏈首先在 main.js 中引入 axiosimport axios from 'axios'這時候如果在其它的元件中,是無法使用

vuex state mutation action 之間關係axios 代理請求問題

1.vuex,狀態管理模式主要有state、view、actions三個部分,vuex通過在 main.js 中注入store,將這種狀態從根元件注入到每個子元件中,在store中匯入vuex,呼叫時需

關於axios請求session丟失的問題

    最近做vue+node的demo中,遇到了關於在後端設定跨域訪問後session儲存不了值的問題,第一次儲存登入資訊req.session.login = user,當登入成功後去取出session中的值,發現req.session.login = undefined

vue 使用axios 請求數據的問題

rom 不想 需要 ole 人員 信息 vue 沒有 main axios默認是沒有jsonp 跨域請求的方法的。一般來說流行的做法是將跨域放在後臺來解決,也就是後臺開發人員添加跨域頭信息。 例如java中的 header,response.setHeader("Acce

vue使用axios this 指向問題

name use .post 指向 sub hack undefined 之前 form 1.解決辦法 在vue中使用axios做網絡請求的時候,會遇到this不指向vue,而為undefined,可以使用箭頭函數"=>"來解決。如下: metho

axios 和請求自動set cookie

coo defaults system32 全部 options eth config span bsp 請求自動set-cookie,全局默認配置設置方法: axios.defaults.withCredentials=true 默認是false 跨域配置,使用i