GVKun编程网logo

在Vue组件化中利用axios处理ajax请求的使用方法(vue ajax axios)

3

想了解在Vue组件化中利用axios处理ajax请求的使用方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于vueajaxaxios的相关问题,此外,我们还将为您介绍关于24_ajax请求

想了解在Vue组件化中利用axios处理ajax请求的使用方法的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于vue ajax axios的相关问题,此外,我们还将为您介绍关于24_ajax请求_使用axios、ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36、AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数、axios, vue-resource进行ajax请求获取后端数据的新知识。

本文目录一览:

在Vue组件化中利用axios处理ajax请求的使用方法(vue ajax axios)

在Vue组件化中利用axios处理ajax请求的使用方法(vue ajax axios)

本文主要给大家介绍了关于在Vue组件化中利用axios处理ajax请求的使用方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

推荐方式

首先在 main.js 中引入 axios

rush:js;"> // 引入 axios import axios from 'axios'

这时候如果你想在其它的组件中使用axios进行ajax请求是或提示报错的,报错内容大致是axios is undefined。

我们通常的决绝方案是将axios改写为 Vue 的原型属性,如2

将axios写入Vue的原型链作为Vue的属性

rush:js;"> // 设置axios请求的默认host axios.defaults.baseURL = "https://www.ifilm.ltd/api/" // 将axios绑定给vue成为一个属性 Vue.prototype.$http = axios

在其他组件中使用axios

{ // todo something })

此方式可以类比到Vue的其他库使用

两种不推荐的使用示范

将axios全局化,作为全局变量

rush:js;"> // 引入axios import axios from 'axios' // 将axios全局化 window.axios = axios;

另外一个不太优雅的方式就是在需要的每个组件中都引入对应的库

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小编的支持。

24_ajax请求_使用axios

24_ajax请求_使用axios

前置说明:

  1.React本身只关注页面,并不包含发送ajax请求的代码

  2.前端应用需要通过ajax请求与后台进行交互(json数据)

  3.React应用中需要集成第三方ajax库(或自己进行封装)

常用的ajax库:

  1.jQuery:比较重,为了发送ajax请求而引用整个文件(不建议使用)

  2.axios:轻量级,建议使用!

    a.封装了XmlHttPRequest对象的ajax

    b.promise风格

    c.可以用在浏览器端和node服务器端

  3.fetch:原生函数,但老版本浏览器不支持

    a.不再使用XmlHttPRequest对象提交ajax请求

    b.为了兼容低版本的浏览器,可以引入兼容库fetch.js

代码:

  //其中的地址貌似访问不到了

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="example"></div>
<script type="text/javascript" src="../js/react.development.js"></script>
<script type="text/javascript" src="../js/react-dom.development.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.js"></script>
<script type="text/babel">
    /*
    * 需求:
    *    1.界面效果如下
    *    2.根据指定的关键字在github上搜索匹配的最受关注的库
    *    3.显示库名,点击链接查看库
    *    4.测试接口:https://api.github.com/search/repositories?q=r&sort=stars
    */
    class MostStarRepo extends React.Component {
        state = {
            repoName: ‘‘,repoUrl: ‘‘
        }

        //在这里发送异步ajax请求
        componentDidMount() {
            //使用axios发送
            const url = `https://api.github.com/search/repositories?q=r&sort=stars`;
            //因为是promise风格的,所以后面可以使用.then()
            axios.get(url).then(response => {
                //数据就在reponse里面
                const result = response.data
                //使用解构得到想要的数据
                const {name,html_url} = result.items[0];
                //更新状态
                this.setState({repoName: name,repoUrl: html_url})
            })
        }

        render() {
            const {repoName,repoUrl} = this.state
            if (!repoName) {
                return <h2>LOADING......</h2>
            } else {
                return <h2>Most star repo is <a href={repoUrl}>{repoName}</a></h2>
            }
        }

    }

    ReactDOM.render(<MostStarRepo/>,document.getElementById(‘example‘));
</script>
</body>
</html>

ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36

ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36

 

 

<!DOCTYPE html> <html lang="en">
<head>     <Meta charset="UTF-8">     <Meta http-equiv="X-UA-Compatible" content="IE=edge">     <Meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script crossorigin="anonymous" src="https://cdn.bootcdn.net/ajax/libs/axios/0.21.1/axios.js"></script>     <title>Document</title> </head>
<body>     <button>GET</button>     <button>POST</button>     <button>AJAX</button> </body> <script>     const btns = document.querySelectorAll(''button'');     //设置baseURL     axios.defaults.baseURL = ''http://127.0.0.1:8000''     btns[0].onclick = function () {         //get请求         axios.get(''/axios-server'', {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 name: ''DX3'',                 age: 20             }         }).then(response => {             console.log(response);         })     }
    btns[1].onclick = function () {         //post请求,第一个参数是url,第二个参数是请求体,第三个参数是其它         axios.post(''/axios-server'', {             username: ''admin'',             pwssword: ''admin''         }, {             //usr 参数             params: {                 id: 100,                 vip: 7             },             //请求头信息             headers: {                 height: ''DX3'',                 weight: 20             }         })     }
    btns[2].onclick = function () {         axios({             method: ''post'',             url: ''/axios-server'',             params: {                 vip: 10,                 level: 30             },             headers: {                 a: 10,                 b: 20             },             data: {                 username: ''admin'',                 password: ''admin''             }         }).then(response => {             console.log(response);             //响应状态码             console.log(response.status);             //响应状态字符串             console.log(response.status.Text);             //响应头信息             console.log(response.headers);             //响应体             console.log(response.data);         })     }
</script>
</html>   ===========server.js===========   //引用 express const { request, response, json } = require(''express''); const express = require(''express'');
//创建应用对象 const app = express();
//创建路由规则, // request 是对请求报文的封装 // response 是对响应报文的封装 //app.all 可以接收任意类型的请求头
app.all(''/axios-server'', (request, response) => {     //设置响应头,设置充许跨域     response.setHeader(''Access-Control-Allow-Origin'', ''*'');     response.setHeader(''Access-Control-Allow-Headers'', ''*'');     const data = { name: ''xiaoming'', age: ''18'' };     //setTimeout(() => {     response.send(JSON.stringify(data));     //}, 3000);

})

// 监听端口启动服务 app.listen(8000, () => {     console.log(''服务已经启动,8000端口监听中.......''); })

AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数

AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数

定义和用法
ajaxSetup() 方法为将来的 AJAX 请求设置默认值。
语法
$.ajaxSetup({name:value,name:value,... })

 

该参数为带有一个或多个名称/值对的 AJAX 请求规定设置。下面的表格中列出了可能的名称/值:名称 值/描述async 布尔值,表示请求是否异步处理。默认是 true。beforeSend(xhr) 发送请求前运行的函数。cache 布尔值,表示浏览器是否缓存被请求页面。默认是 true。complete(xhr,status) 请求完成时运行的函数(在请求成功或失败之后均调用,即在 success 和 error 函数之后)。contentType 发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。context 为所有 AJAX 相关的回调函数规定 "this" 值。data 规定要发送到服务器的数据。dataFilter(data,type) 用于处理 XMLHttpRequest 原始响应数据的函数。dataType 预期的服务器响应的数据类型。error(xhr,status,error) 如果请求失败要运行的函数。global 布尔值,规定是否为请求触发全局 AJAX 事件处理程序。默认是 true。ifModified 布尔值,规定是否仅在最后一次请求以来响应发生改变时才请求成功。默认是 false。jsonp 在一个 jsonp 中重写回调函数的字符串。jsonpCallback 在一个 jsonp 中规定回调函数的名称。password 规定在 HTTP 访问认证请求中使用的密码。processData 布尔值,规定通过请求发送的数据是否转换为查询字符串。默认是 true。scriptCharset 规定请求的字符集。success(result,xhr) 当请求成功时运行的函数。timeout 设置本地的请求超时时间(以毫秒计)。Traditional 布尔值,规定是否使用参数序列化的传统样式。type 规定请求的类型(GET 或 POST)。url 规定发送请求的 URL。默认是当前页面。username 规定在 HTTP 访问认证请求中使用的用户名。xhr 用于创建 XMLHttpRequest 对象的函数。

axios, vue-resource进行ajax请求获取后端数据

axios, vue-resource进行ajax请求获取后端数据

一、通过axios完成异步请求:

1.安装

npm install axios --save

 

2.使用

2.1 方法一:将axios改写成Vue的原型属性

1.main.js

import axios from ''axios''
import Vue from ''vue''

Vue.prototype.$ajax = axios;

2.组件中使用:

//get 请求
this.$ajax.get(''api/getNewsList'') .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });

//post 请求
this.$ajax.post(''api/getNewsList'', { firstName: ''Fred'', lastName: ''Flintstone'' }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); });
 

 

3.vuex的store中使用

import Vue from ''Vue''
import Vuex from ''vuex''

import axios from ''axios''

Vue.use(Vuex)
const store = new Vuex.Store({
  // 定义状态
  state: {
    user: {
      name: ''xiaoming''
    }
  },
  actions: {
    // 封装一个 ajax 方法
    login (context) {
      axios.post(''/api/getNewList'', state.user).then((res) => {
         console.log(res.data);
       }.catch((err) => {
         console.log(err);
       })
    }
  }
})

export default store

2.2 结合vue-axios使用

1.main.js

import Vue from ''vue''
import axios from ''axios''
import VueAxios from ''vue-axios''


Vue.use(VueAxios, axios);

2.组件中使用

methods: {
      this.axios.get(''api/getNewsList'').then((response)=>{
        this.newsList=response.data.data;
      }).catch((response)=>{
        console.log(response);
      })
}

 

二、通过vue-rource完成异步请求(官方已不再维护,建议使用axios)

 其用法跟ajax用法差不多,也就是改变了一些语法格式。从获取路径到值的获取都是一样的,但是有一点是不同的就是ajax获取到的数据会自动转成json格式,而vue-resource获取到的数据要手动转成json格式。

 

 

关于在Vue组件化中利用axios处理ajax请求的使用方法vue ajax axios的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于24_ajax请求_使用axios、ajax 第十三节 AJAX-Axios (通用方法) 函数发送AJAX请求 04:36、AJAX请求 $.ajaxSetup方法的使用:设置AJAX请求的默认参数选项,当程序中需要发起多个AJAX请求时,则不用再为每一个请求配置请求的参数、axios, vue-resource进行ajax请求获取后端数据的相关信息,请在本站寻找。

本文标签:

上一篇防止页面url缓存中ajax中post请求的处理方法(ajax禁止缓存)

下一篇关于jQuery.ajax()的jsonp碰上post详解(json jquery)