vue2项目使用axios发送请求

前言:在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource。

目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求,下面来具体介绍一下axios的使用。

项目中安装axios

cnpm install axios -S

每个需要请求的组件中都需要引入axios,如果觉得麻烦,可以axios改写成Vue的原型属性,在使用的时候,就不需要每个组件都去引用。

将axios改写成Vue的原型属性

1、在main.js中引入axios

import axios from ‘axios‘

2、写成vue的原型属性

  Vue.prototype.$http = axios

在main.js中添加这两行代码之后,就能直接在组件中使用axios了

使用方式

this.$http.post(url,params).then(function (response) {
  //请求成功
}).catch(function (error) {
  //请求失败
});

实际应用

假设我们需要请求的接口是:http://www.liuliangu.cn:8067/index/data/

如果是开发环境,我们请求的接口如果存在跨域问题,需要配置代理

在vue-cli的config文件下面的index.js里有一个参数叫proxyTable

配置proxyTable的时候本地会虚拟一个服务端接收你的请求并代你发送该请求,这样就不会有跨域问题了,当然这只适用于开发环境。

具体配置代码:

// 配置代理 
proxyTable: {
  ‘/api‘:{ // api为匹配项
    target:‘http://www.liuliangu.cn:8067‘, // 设置代理目标
    changeOrigin: true,
    pathRewrite: { // 重写路径
      ‘^/api‘: ‘/‘
    }
  }
}

组件中请求的具体代码:

this.$http.post(‘/api/index/data/‘, qs.stringify({
  jobName: ‘getSiteProductAnalysis‘,
  DateType: this.DateType
})).then(function (response) {
  console.log(response)
}).catch(function (error) {
  console.log(error);
});

注意

在vue2中使用axios,我们请求的参数仍为json类型,是并没有序列化的。我们需要使用querystring解决该问题

需要先引入  import qs from ‘qs‘;

传入参数的时候转下格式,qs.stringify(data)

这样,我们就能正常请求访问到数据了。

生成环境下,生产代码应该使用npm run build然后把dist放到nginx服务器上,在nginx上配置代理地址。

原文地址:https://www.cnblogs.com/gopark/p/8157306.html

时间: 2024-11-03 09:33:07

vue2项目使用axios发送请求的相关文章

vue2.0项目实战--使用axios发送请求

在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤大原话 最近团队讨论了一下,Ajax 本身跟 Vue 并没有什么需要特别整合的地方,使用 fetch polyfill 或是 axios.superagent 等等都可以起到同等的效果, vue-resource 提供的价值和其维护成本相比并不划算,所以决定在不久以后取消对 vue-resource 的官

Vuex + axios 发送请求

Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios 来完成 ajax 请求,而大型项目都会使用 Vuex 来管理数据,所以这篇博客将结合两者来发送请求 前言: Vuex 的安装将不再赘述,可以参考之前的博客 Vue 爬坑之路(四)-- 与 Vuex 的第一次接触 使用 cnpm 安装 axios cnpm install axios -S 安装其他插

使用axios发送请求

在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤大原话 最近团队讨论了一下,Ajax 本身跟 Vue 并没有什么需要特别整合的地方,使用 fetch polyfill 或是 axios.superagent 等等都可以起到同等的效果, vue-resource 提供的价值和其维护成本相比并不划算,所以决定在不久以后取消对 vue-resource 的官

使用axios发送请求,遇到会发两次的情况

在学习php&mySQL的过程中,前端nuxt用(vue官方推荐的)axios发送post请求,以实现向数据库插入页面提交数据的功能. 发现功能是实现了,但数据库中表的数据是这样的 很莫名其妙的多出空行,由于是初学者,费了好长时间找是不是自己php连接数据库的代码出了什么问题,但并没有发现疏漏. 于是找回前端,确定axios请求只触发了一次后,看了下浏览器控制台network,发现每次点击提交都会出现2次请求,对比一下发现第一次请求是这样的 下边的login.php才是正常的post请求.那么本

项目访问路径+发送请求路径写法的相关问题

1.js中发生ajax请求路径写法 queryUrl = 'http://localhost:8080/spc/findMemberRight.do'; 规则为:ip+端口+controller的url 如果设置了代理的则为:ip+端口+代理(一般为模块名)+controller的url 2.浏览器直接访问webapp下的html 1.首先需要把webapp目录加入编译路径,IDEA设置webapp为编译路径方法如下: 2.然后访问路径变为 http://localhost:8080/right

服务器上的项目不能对外发送请求

是服务器没有开通外网访问导致的,具体的需要修改DNS 已下是不能正常请求短信接口的日志 java.net.UnknownHostException: api.1cloudsp.com 原文地址:https://www.cnblogs.com/MuZi0627/p/10237135.html

vue 借用element-ui实现头像上传 axios发送请求

<!-- 上传组件 --> <!-- 总结一下: action 写图片上传请求的路径 去路径哈 show-file-list就是当你上传时,是否会显示出上传的是哪一个图片,一般为false handleAvatarSuccess它是成功的回调 beforeAvatarUpload:上传之前做的一些事情在本页面中你不点击按钮 图片也会显示出来 element-ui中的上传组件 在action时,写了上传地址,当你选择好图片,就自动帮你上传了 <template> <div

Vue中如何使用axios发送jsonp跨域验证

https://cnodejs.org/topic/5930430f03dba3510d8a62c6 在使用axios发送请求时,服务器端设置 res.header("Access-Control-Allow-Origin", "*");可以正确得到结果 当服务器端不设置允许跨域时,使用jsonp方式发送就不行了,提示错误如下 XMLHttpRequest cannot load http://localhost:3000/axios?cb=cb. No 'Acce

axios发送两次请求原因及解决方法

axios发送两次请求原因及解决方法 最近Vue项目中使用axios组件,在页面交互中发现axios会发送两次请求,一种请求方式为OPTIONS,另外一种为自己设置的. 如图: 什么是CORS通信? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制. CORS需要浏览器和服务器同时支持.目前,所有浏览器都支持该功能,IE浏