----vue cli-3 配置axios 跨域請求和表單提交----


一、安裝axios和qs 依賴包 

 

 

二、配置 axios 全局變量

 

在main.js加上依賴的引入

 

import qs from 'qs'

import common from '../public/js/common'

import Axios from 'axios'

Vue.prototype.$http = Axios

Vue.prototype.$qs=qs

1

2

3

4

5

在src根目錄創建一個 vue.config.js 的文件,這個是因為 cli-3 和 cli-2 創建項目的結構不同。

 

// vue.config.js 配置說明

// 這里只列一部分,具體配置慘考文檔啊

module.exports = {

    // baseUrl  type:{string} default:'/'

    // 將部署應用程序的基本URL

    // 將部署應用程序的基本URL。

    // 默認情況下,Vue CLI假設您的應用程序將部署在域的根目錄下。

    // https://www.my-app.com/。如果應用程序部署在子路徑上,則需要使用此選項指定子路徑。例如,如果您的應用程序部署在https://www.foobar.com/my-app/,集baseUrl到'/my-app/'.

 

    baseUrl: process.env.NODE_ENV === 'production' ? '/online/' : '/',

 

    // outputDir: 在npm run build時 生成文件的目錄 type:string, default:'dist'

 

    // outputDir: 'dist',

 

    // pages:{ type:Object,Default:undfind }

    /*

      構建多頁面模式的應用程序.每個“頁面”都應該有一個相應的JavaScript條目文件。該值應該是一

      個對象,其中鍵是條目的名稱,而該值要么是指定其條目、模板和文件名的對象,要么是指定其條目

      的字符串,

      注意:請保證pages里配置的路徑和文件名 在你的文檔目錄都存在 否則啟動服務會報錯的

    */

    // pages: {

    // index: {

    // entry for the page

    // entry: 'src/index/main.js',

    // the source template

    // template: 'public/index.html',

    // output as dist/index.html

    // filename: 'index.html'

    // },

    // when using the entry-only string format,

    // template is inferred to be `public/subpage.html`

    // and falls back to `public/index.html` if not found.

    // Output filename is inferred to be `subpage.html`.

    // subpage: 'src/subpage/main.js'

    // },

 

    //   lintOnSave:{ type:Boolean default:true } 問你是否使用eslint

    lintOnSave: true,

    // productionSourceMap:{ type:Bollean,default:true } 生產源映射

    // 如果您不需要生產時的源映射,那么將此設置為false可以加速生產構建

    productionSourceMap: false,

    // devServer:{type:Object} 3個屬性host,port,https

    // 它支持webPack-dev-server的所有選項

 

    devServer: {

        port: 8080, // 端口號

        host: 'localhost',

        https: false, // https:{type:Boolean}

        open: true, //配置自動啟動瀏覽器

        // proxy: 'http://localhost:4000' // 配置跨域處理,只有一個代理

        proxy: {

            '/sell': {

                target: 'http://127.0.0.1/sell',   // 需要請求的地址

                changeOrigin: true,  // 是否跨域

                pathRewrite: {

                    '^/sell': '/'  // 替換target中的請求地址,也就是說,在請求的時候,url用'/proxy'代替'http://ip.taobao.com'

                }

            }

 

        },  // 配置多個代理

    }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

三、用法

 

            getData() {

                var self = this;

                this.$http.get('/sell/orderMaster/queryOrders', {

                    params: {

                        current: this.current,

                        size: this.size

                    }

                }).then(function (response) {

                    var data = self.common.handleData(response.data);

                    self.records = data.records;

                    self.total = data.total;

                    self.current = data.current;

                });

            },

1

2

3

4

5

6

7

8

9

10

11

12

13

14

四、axios 幾種用法

 

1:GET

 

// Make a request for a user with a given ID

axios.get('/user?ID=12345')

  .then(function (response) {

    console.log(response);

  })

  .catch(function (error) {

    console.log(error);

  });

 

// Optionally the request above could also be done as

axios.get('/user', {

    params: {

      ID: 12345

    }

  })

  .then(function (response) {

    console.log(response);

  })

  .catch(function (error) {

    console.log(error);

  });

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

2:POT

 

axios.post('/user', {

    firstName: 'Fred',

    lastName: 'Flintstone'

  })

  .then(function (response) {

    console.log(response);

  })

  .catch(function (error) {

    console.log(error);

  });

1

2

3

4

5

6

7

8

9

10

3:通用

 

axios({

  method:'get',

  url:'http://bit.ly/2mTM3nY',

  responseType:'stream'

}) .then(function(response) {

  response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))

});

1

2

3

4

5

6

7

4:axios地址

 

https://www.npmjs.com/package/axios

 

五、表單提交 

表單提交用QS

 

  this.$http({

                    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},

                    transformRequest: [data => self.$qs.stringify(data)],

                    method: 'post',

                    url: 'sell/login',

                    data: {

                        userId: self.userInfo.userId,

                        password: self.userInfo.password

                    }

                }).then(function (response) {

                    self.$router.push({path: '/index'});

                })

                    .catch(function (error) {

                        console.log(error);

                    });

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

axios請求加上下面兩句

 

headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},

transformRequest: [data => self.$qs.stringify(data)],

--------------------- 

作者:Eternal1125 

來源:CSDN 

原文:https://blog.csdn.net/qq_36306590/article/details/81746897 

版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

一、安裝axios和qs 依賴包 

二、配置 axios 全局變量
在main.js加上依賴的引入
import qs from 'qs'import common from '../public/js/common'import Axios from 'axios'Vue.prototype.$http = AxiosVue.prototype.$qs=qs12345在src根目錄創建一個 vue.config.js 的文件,這個是因為 cli-3 和 cli-2 創建項目的結構不同。
// vue.config.js 配置說明// 這里只列一部分,具體配置慘考文檔啊module.exports = {    // baseUrl  type:{string} default:'/'    // 將部署應用程序的基本URL    // 將部署應用程序的基本URL。    // 默認情況下,Vue CLI假設您的應用程序將部署在域的根目錄下。    // https://www.my-app.com/。如果應用程序部署在子路徑上,則需要使用此選項指定子路徑。例如,如果您的應用程序部署在https://www.foobar.com/my-app/,集baseUrl到'/my-app/'.
    baseUrl: process.env.NODE_ENV === 'production' ? '/online/' : '/',
    // outputDir: 在npm run build時 生成文件的目錄 type:string, default:'dist'
    // outputDir: 'dist',
    // pages:{ type:Object,Default:undfind }    /*      構建多頁面模式的應用程序.每個“頁面”都應該有一個相應的JavaScript條目文件。該值應該是一      個對象,其中鍵是條目的名稱,而該值要么是指定其條目、模板和文件名的對象,要么是指定其條目      的字符串,      注意:請保證pages里配置的路徑和文件名 在你的文檔目錄都存在 否則啟動服務會報錯的    */    // pages: {    // index: {    // entry for the page    // entry: 'src/index/main.js',    // the source template    // template: 'public/index.html',    // output as dist/index.html    // filename: 'index.html'    // },    // when using the entry-only string format,    // template is inferred to be `public/subpage.html`    // and falls back to `public/index.html` if not found.    // Output filename is inferred to be `subpage.html`.    // subpage: 'src/subpage/main.js'    // },
    //   lintOnSave:{ type:Boolean default:true } 問你是否使用eslint    lintOnSave: true,    // productionSourceMap:{ type:Bollean,default:true } 生產源映射    // 如果您不需要生產時的源映射,那么將此設置為false可以加速生產構建    productionSourceMap: false,    // devServer:{type:Object} 3個屬性host,port,https    // 它支持webPack-dev-server的所有選項
    devServer: {        port: 8080, // 端口號        host: 'localhost',        https: false, // https:{type:Boolean}        open: true, //配置自動啟動瀏覽器        // proxy: 'http://localhost:4000' // 配置跨域處理,只有一個代理        proxy: {            '/sell': {                target: 'http://127.0.0.1/sell',   // 需要請求的地址                changeOrigin: true,  // 是否跨域                pathRewrite: {                    '^/sell': '/'  // 替換target中的請求地址,也就是說,在請求的時候,url用'/proxy'代替'http://ip.taobao.com'                }            }
        },  // 配置多個代理    }}12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364三、用法
            getData() {                var self = this;                this.$http.get('/sell/orderMaster/queryOrders', {                    params: {                        current: this.current,                        size: this.size                    }                }).then(function (response) {                    var data = self.common.handleData(response.data);                    self.records = data.records;                    self.total = data.total;                    self.current = data.current;                });            },1234567891011121314四、axios 幾種用法
1:GET
// Make a request for a user with a given IDaxios.get('/user?ID=12345')  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });
// Optionally the request above could also be done asaxios.get('/user', {    params: {      ID: 12345    }  })  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });1234567891011121314151617181920212:POT
axios.post('/user', {    firstName: 'Fred',    lastName: 'Flintstone'  })  .then(function (response) {    console.log(response);  })  .catch(function (error) {    console.log(error);  });123456789103:通用
axios({  method:'get',  url:'http://bit.ly/2mTM3nY',  responseType:'stream'}) .then(function(response) {  response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))});12345674:axios地址
https://www.npmjs.com/package/axios
五、表單提交 表單提交用QS
  this.$http({                    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},                    transformRequest: [data => self.$qs.stringify(data)],                    method: 'post',                    url: 'sell/login',                    data: {                        userId: self.userInfo.userId,                        password: self.userInfo.password                    }                }).then(function (response) {                    self.$router.push({path: '/index'});                })                    .catch(function (error) {                        console.log(error);                    });123456789101112131415axios請求加上下面兩句
headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},transformRequest: [data => self.$qs.stringify(data)],--------------------- 作者:Eternal1125 來源:CSDN 原文:https://blog.csdn.net/qq_36306590/article/details/81746897 版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM