vue的ajax是什么?

本文介绍在Vue中如何使用Ajax进行GET和POST请求,演示了如何处理响应数据,并通过实例展示了如何实现搜索功能。

vue的ajax与我们的以前接触到的ajax作用是一致的,都是用来传递参数的,我们先来简单了解一下他在vue中的写法

通过代码来看

  1. GET 的请求方式
  created() {
    let url = `https://api.github.com/search/repositories?q=${this.queryName}`;
	
	axios
      .get(url)
      .then(
        // 请求成功
        response => { // 可以写成res
          console.log(response.data.items);
        },
        // 接口出错 不是请求失败
        error => {
          console.log("接口出错了");
        }
      )
      // 请求失败
      .catch(error => {
        console.log("请求过程出错");
      });
	}
	axios({
		// 默认的发送方式,方式为get
	}) 
  1. POST 的请求方式
 created() {
	axios
      .post("/user", {
        firstName: "san",
        lastName: "si"
      })
      .then(response => {
        console.log(response);
      })
      .catch(err => {
        console.log(err);
      });
  }
  1. 执行多个并发请求
 created() {
	ction getUser() {
      return axios.get(url);
    }

    function postUser() {
      return axios.post(url, { a: 1 });
    }

    axios.all([getUser(), postUser()]);
}

下边我们通过vue的ajax来完成一个小案例
我们先准备一个基础模板

<template>
  <div id="app">
    <h3 >
      This is 数据<a href="reqUrl">{{reqName}}</a>
    </h3>
  </div>
</template>

<script>
import axios from "axios";

export default {
  name: "App",
  data() {
    return {
      reqUrl: "",
      reqName: "",
      queryName: "GD"
    };
  },
  created() {
    let url = `https://api.github.com/search/repositories?q=${this.queryName}`;

    // GET 的请求方式
    axios
      .get(url)
      .then(
        response => { 
			let result = response.data;
			console.log(result)
        },
        error => {
          console.log("接口出错了");
        }
      )
      .catch(error => {
        console.log("请求过程出错");
      });
};
</script>

浏览器反馈
在这里插入图片描述
在这里插入图片描述
可以看出,items里就是我们要获取的数据

那我们的需求是,当他这个路径发起的时候让一下标签显示
<template>
  <div id="app">
    <h2 v-show="!reqUrl">loading...</h2> 

    <h3 v-show="reqUrl">
      This is<a href="reqUrl">{{reqName}}</a>
    </h3> 
  </div>
</template>

response => { 
	console.log(response.data);
	let result = response.data;
	
	let reArray = result.items[0];
	console.log(reArray);
	
	this.reqName = reArray.name;
	this.reqUrl = reArray.html_url;
 },
现在我们在通过vue的ajax完成一个小的搜索案例

我们先准备一个单页面组件

<template>
    <div>
        <input type="text" v-model="inputsearchName">
        <button @click="search">Search</button>
    </div>
</template>

<script>
export default {
    name:'search',
    data() {
        return {
            inputsearchName:""
        }
    },
    methods: {
        search(){
            // 去掉字符串中的首尾空格
            let iptval = this.inputsearchName.trim();
            if(!iptval){
                return;
            }

            this.setsearchName(iptval);
        }
    },
}
</script>

创建了一个按钮,点击之后会触发一个函数,然后去获取到这个ipnut框里输入的值,并做一个非空判断,但如果存在的话用他去搜索,然后置空input框

在创建一个组件,用来显示内容

<template>
    <div>
        <h2 v-show="firstView"> 输入名字搜索 </h2>
        <h2 v-show="loading"> loading... </h2>
        <h2 v-show="errorMsg"> {{errorMsg}} </h2>

        <div class="row" v-show="users">
            <div v-for="user of users" :key="user.id">
                <a href="">
                    <img :src="" alt="">
                </a>
                <p>  </p>
            </div>
        </div>
    </div>
</template>

<script>
import Axios from 'axios';
export default {
    name:'list',
    // 子接
    props:['searchName'],
    data() {
        return {
            firstView:true,
            loading:false,
            errorMsg:null,
            users:null
        }
    }
}
</script>

然后我们去根组件里引入以下两个单文件组件

<template>
  <div id="app">

    <h1> Search Github </h1>

    <search :setsearch-name="setsearchName"></search>
    <list :search-name="searchName"></list>
    
  </div>
</template>

<script>
import axios from "axios";
import search from "./components/search";
import list from "./components/list"

export default {
  name: "App",
  data() {
    return {
      searchName:""
    };
  },
  components:{
    search,
    list
  },
  methods: {
    setsearchName(iptval){
      this.searchName = iptval;
    }
  },
};
</script>

当组件被调用时会触发setsearchName,然后把他的value值传入searchName ,在传给list这个组件

props:['searchName'],

list接收数据,

现在我们已经有里接收数据的,然后我们去list做一个ajax传参

因为searchName是会改变的,所以我们把他写在watch里监听起来

    watch: {
        // 监听searchName做出相应改变
        searchName(){
            this.firstView = false;
            this.loading = true;

            let url = `https://api.github.com/search/repositories?q=${this.searchName}`;

            // 发送ajax请求
            Axios
                .get(url)
                .then(
                    res=>{
                        console.log(res);
                        this.loading = false;

                        let result = res.data;
                        this.users = result.items.map(item=>{
                            return{
                                html_url : item.html_url,
                                avatar_url : item.avatar_url,
                                login : item.login
                            }
                        })
                    },
                    error=>{
                        console.log('接口错误')
                    }
                    
                )
                .catch(err=>{
                    this.loading = false;
                    this.errorMsg = err;
                })
        }
    },
非常好的问题! ### ❓那 Ajax 对应什么? Ajax(**Asynchronous JavaScript and XML**)不是某个具体的库或框架,而是一种**技术概念**,它指的是**在不刷新整个页面的情况下,通过 JavaScript 向服务器发送异步请求并更新部分页面内容**。 --- ## ✅ Ajax 的核心概念 | 特性 | 说明 | |------|------| | 异步请求 | 在不刷新页面的情况下与服务器通信 | | 使用 JavaScript | 主要通过 `XMLHttpRequest` 或 `fetch` API 实现 | | 可以发送各种类型的请求 | GET、POST、PUT、DELETE 等 | | 可以接收各种格式的响应 | JSON、XML、HTML、文本等 | | 用于局部更新 | 不需要刷新整个页面,提升用户体验 | --- ## ✅ Ajax 的实现方式(对应的技术) 虽然 Ajax 是一种概念,但我们可以使用多种方式来实现它: ### 1. 原生 JavaScript 实现 Ajax #### ✅ 使用 `XMLHttpRequest` ```javascript const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1', true); xhr.onload = function () { if (xhr.status === 200) { console.log(JSON.parse(xhr.responseText)); } }; xhr.onerror = function () { console.error('请求失败'); }; xhr.send(); ``` #### ✅ 使用 `fetch`(现代方式) ```javascript fetch('https://jsonplaceholder.typicode.com/posts/1') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('请求失败:', error)); ``` --- ### 2. 使用第三方库实现 Ajax(封装更方便) #### ✅ 使用 `axios`(推荐) ```javascript axios.get('https://jsonplaceholder.typicode.com/posts/1') .then(response => console.log(response.data)) .catch(error => console.error('请求失败:', error)); ``` #### ✅ 使用 `jQuery.ajax` ```javascript $.ajax({ url: 'https://jsonplaceholder.typicode.com/posts/1', method: 'GET', success: function(data) { console.log(data); }, error: function() { console.error('请求失败'); } }); ``` --- ## ✅ AjaxVue 中的体现 虽然 Vue 本身不提供 Ajax 功能,但你可以使用 `axios`、`fetch` 或其他库来实现 Ajax 请求。 ### Vue + `axios` 示例: ```vue <template> <div> <button @click="fetchData">获取数据</button> <p v-if="post">{{ post.title }}</p> </div> </template> <script> import axios from 'axios'; export default { data() { return { post: null }; }, methods: { async fetchData() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/posts/1'); this.post = response.data; } catch (error) { console.error('请求失败:', error); } } } }; </script> ``` --- ## ✅ Ajax 的替代技术(现代 Web 开发中) 虽然 Ajax 是早期网页异步通信的代名词,但现代 Web 开发中更常用以下方式: | 技术 | 说明 | |------|------| | `fetch` API | 浏览器原生支持,基于 Promise | | `axios` | 第三方库,功能更强大,支持拦截器、取消请求等 | | `jQuery.ajax` | 老项目中使用较多,兼容性好但现代项目中不推荐 | | `WebSocket` | 实现实时双向通信,适用于聊天、通知等场景 | --- ## ✅ 总结一句话: > **Ajax 是一种异步请求服务器并局部更新页面的技术概念,现代 Web 中主要通过 `fetch`、`XMLHttpRequest`、`axios` 等方式实现。它不是某个库,而是浏览器与服务器之间通信的一种方式。** --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值