AJAX与axios框架

这篇具有很好参考价值的文章主要介绍了AJAX与axios框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

提示:这里可以添加本文要记录的大概内容:

通过 ajax 进行前后端交互
AJAX与axios框架,前端,ajax,前端,javascript

案例

此项目用到了javaweb知识

首先创建JavaWeb项目编写代码:

package ajax;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;

@WebServlet("/ajax")
public class ajax extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 将Gson库放在WEB-INF/lib目录下
        // 运行时加载Gson库
        try {
            Class.forName("com.google.gson.Gson");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return;
        }

        List<User> list = new ArrayList<User>();
        list.add(new User(1,"张三","23"));
        list.add(new User(2,"李四","28"));
        Gson gson = new Gson();
        response.setContentType("application/json");
        response.setCharacterEncoding("utf-8");
        response.getWriter().print(gson.toJson(list));
    }

    class User {
        private int id;
        private String name;
        private String age;

        public User(int id, String name, String age) {
            super();
            this.id = id;
            this.name = name;
            this.age = age;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getSex() {
            return age;
        }

        public void setSex(String sex) {
            this.age = age;
        }
    }
}
//最后将Gson库的jar包重新复制到WEB-INF/lib目录下,或者在Java Web项目的classpath中添加Gson库的jar包

运行结果:
AJAX与axios框架,前端,ajax,前端,javascript

接下来创建vue项目

创建完项目进入安装Axios框架npm i axios

打开根组件删掉全部代码重新生成

在template标签内加上一个按钮

<!-- 看到按钮就想到事件 -->
<button @click="send">发送请求</button>

接下来在methods里面配置方法

  methods: {
    send(){
    
  },

axios框架发送请求,首先需要先在script标签中导入这个框架

// 第一个axios是自定义名字
import axios from 'axios'

现在回到send方法内部,导入axios调用

  methods: {
    send(){
      // get方法代表向后端发送请求   参数是后端项目程序地址
      // then方法代表处理后端发送回的响应数据
      axios.get('http://localhost:8888/ajax/ajax')
      .then( (resp)=>{
      //log测试
        console.log(resp.data);
      } )
    }
  },

localhost是本地地址,也可以写自己IP地址
运行代码后右键开发者模式点击控制台,然后点击发送请求按钮:AJAX与axios框架,前端,ajax,前端,javascript

跨域访问

代理服务器的目的:
代理服务器的主要目的是为客户端提供一种间接访问网上资源的方式,客户端向代理服务器发送请求,代理服务器自动转发,从而代替客户端完成请求和响应

对于代理服务器的理解可以参考下面这个比喻:假设你需要访问一个网站,但是由于某些原因无法直接连接该网站,这时候你可以使用一个代理服务器来帮助你连接该网站。代理服务器就像是一个中间人,它接收你的请求,然后将请求转发给目标网站,接着将目标网站的响应返回给你。
这个过程就好像是一个邮递员,他接收用户发出的请求,将请求转发给目标服务器,在目标服务器响应后将响应返回给用户。这个过程就好比是一个人需要向另一个人发送信件,但是由于某些原因不能直接发送,所以需要寄给邮递员,由邮递员帮忙送到另一个人手里。代理服务器可以提高访问速度、保护隐私、过滤内容等等。
因此,代理服务器可以在一些特定的情况下帮助你绕过一些限制和策略,从而达到访问目标网站的目的。

在项目内最下面有个vue.config.js文件,代理服务器加上去(第三行后)

  devServer: {
    proxy: {
      '/api':{
        target: 'http://localhost:8888/ajax/',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/api':''
        }
      }
    }
  }

这时回到根组件,send方法内的axios地址要改成代理服务器地址

      axios.get('/api/ajax')  

重启项目,刷新页面,点击按钮:
AJAX与axios框架,前端,ajax,前端,javascript

接下来完善项目,因为在实际项目中用户不会去查看控制台
应该把数据发回来后渲染到视图上

在data中做一个配置项,把发回来的响应数据赋值给data中的配置数据,一赋值vue就监听到了,数据就改变,立刻修改数据同步到视图上

  data () {
    return {
       // 返回到数据是个数组,包含多个数据
       arr:[]
    }
  },

接下来在methods内标签的send方法中删掉log输出,加上

//等于发送回来的相应数据
this.arr = resp.data

完善html代码,这里加了个表格

<template>
  <div>
    <!-- 看到按钮就想到事件 -->
    <button @click="send">发送请求</button>
    <table>
      <tr>
        <th>id</th>
        <th>名字</th>
        <th>年龄</th>
      </tr>
      <tr v-for="(item, index) in arr" :key="index">
        <th>{{ item.id }}</th>
        <th>{{ item.name }}</th>
        <th>{{ item.age}}</th>
      </tr>
    </table>
  </div>
</template>

加上css样式:

<style scoped>
table {
  border-collapse: collapse;
  width: 100%;
  margin-top: 50px;
}

th, td {
  border: 1px solid black;
  padding: 8px;
  text-align: center;
}

thead {
  background-color: #f2f2f2;
}

tr:nth-child(even) {
  background-color: #f2f2f2;
}

button {
  margin-bottom: 20px;
  padding: 10px 20px;
  border: none;
  border-radius: 4px;
  background-color: #4CAF50;
  color: white;
}
</style>

运行效果:

AJAX与axios框架,前端,ajax,前端,javascript

总结❗

异步请求的同源策略:

浏览器发送的请求必须和前端服务器IP地址一样、端口号一样

前后端分离项目采用的是Ajax异步请求通信方式:

采用 axios 框架发送异步请求
浏览器发送 Ajax 请求时,会有同源策略限制,禁止跨域请求
前端 和 后端项目的协议、IP地址、端口号都相同才认为是同源

跨域请求解决方案:

在前端项目中配置代理服务器(安全性高,常用)
在后端项目中设置响应头为资源共享状态(风险高)

怎么异步更新数据:

发送 ajax 异步请求
在回调函数中,将相应数据赋值给对应的数据

ajax如何取消请求?
原生ajax终止请求,调用abort()方法
axios终止请求, 用浏览器原生的AbortController来终止请求文章来源地址https://www.toymoban.com/news/detail-565366.html

到了这里,关于AJAX与axios框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AJAX和Axios异步框架

    AJAX:Asynchronous JavaScript And XML 异步的JavaScript和XML 作用:1、与服务器进行数据交换,通过AJAX可以给服务器发送请求,并获取服务器响应数据。使用了AJAX和服务器进行通信,就可以使用ajax和html来代替jsp页面了。这样可以实现将前后端进行分离,因为jsp需要依赖浏览器才能运行

    2024年01月19日
    浏览(33)
  • 前端学习--Ajax(3) XHR/axios

    1.1 概念 XMLHttpRequest(XHR)是一种用于在客户端和服务器之间发送HTTP请求的JavaScript API。它允许客户端在不重新加载整个页面的情况下向服务器发送请求,并根据服务器的响应更新页面的局部内容。Ajax是基于XHR封装的。 1.2 使用xhr发起get请求 步骤 创建XHR对象 调用XHR.open()函数

    2023年04月26日
    浏览(23)
  • 前端开发中的ajax请求、axios封装

    目录 浏览器http请求 同步 js标签跨域、url 异步ajax、websock协议 ajax是异步的技术术语,最早的api是xhr(XMLHttpRequest) fetch es6 api axios 封装axios(无论用requst还是axios请求都会生效) src/utils/request.ts请求/响应拦截器封装 ts post请求request.post(url)和 通用请求request({url,method:\\\'post\\\'})对象

    2024年02月11日
    浏览(34)
  • 前端如何中断请求 ( axios、原生 ajax、fetch)

    使用场景 在前端开发中,我们经常需要中断请求来优化性能或处理特定的业务需求。以下是一些常见的使用场景: 比如 重复请求:当页面中多个组件并发调用同一个接口时,在第一个请求返回后,我们可能需要中断其他组件对该接口的调用,以避免重复请求和冗余数据。这

    2024年02月04日
    浏览(37)
  • 前端同步异步讲解--Ajax(axios进阶)的相关操作

    之前我们讲到了数据在前后端传输是依赖xml文件,但是由于时代变迁,他也已经比逐步淘汰,json对象就逐步开始作为数据传输通道的桥梁,忘记的话可以去回顾文章对应的json对象 最全的前端知识之css与jsp介绍-CSDN博客 文章浏览阅读1k次,点赞31次,收藏21次。ok了,宝子们,

    2024年02月21日
    浏览(34)
  • 前端终止请求的三种方式(ajax、axios)

    一、原生ajax终止请求 1、abort() ​ XMLHttpRequest.abort() 方法用于终止 XMLHttpRequest 对象的请求,该方法没有参数,也没有返回值。当调用该方法时,如果对应 XMLHttpRequest 对象的请求已经被发送并且正在处理中,则会中止该请求;如果请求已经完成(即已经接收到完整的响应),则

    2024年02月09日
    浏览(35)
  • 同步_异步请求和Ajax并利用axios框架简化

    目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步请求:发送请求后,会做出回应,回应的内容会覆盖浏览器中的内容,这样会打断其他正常的操作,显得不太友好,并且请求时会携带所有的信息。 异步请求:前端正常输入时,可以同时与后端

    2024年02月13日
    浏览(28)
  • 前端请求数据方法 —— Ajax、Fetch、Axios、Get、Post

    Ajax :( “Asynchronous JavaScript and XML”(异步JavaScript和XML)的缩写)是一组Web开发技术,Ajax不是一种技术,而是一个编程概念。AJAX 这个词就成为 JavaScript 脚本发起 HTTP 通信的代名词,也就是说,只要用脚本发起通信,就可以叫做 AJAX 通信。 技术实现 用于演示的HTML(或 XHTML)和

    2024年01月22日
    浏览(43)
  • 【学一点儿前端】ajax、axios和fetch的概念、区别和易混淆点

    ajax是js异步技术的术语,早期相关的api是xhr,它是一个术语。 fetch是es6新增的用于网络请求标准api,它是一个api。 axios是用于网络请求的第三方库,它是一个库。 它的全称是:Asynchronous JavaScript And XML,翻译过来就是“异步的 Javascript 和 XML”。 很多小伙伴可能会误以为 Ajax

    2024年02月07日
    浏览(36)
  • 前端架构师之01_JavaScript_Ajax

    1.1 Web服务器 Web服务器又称为网站服务器,主要用于提供网上信息浏览服务。 常见的Web服务器软件有Apache HTTP Server(简称Apache)、Nginx等。 浏览器与服务器交互 在Web服务器中,请求资源又分为静态资源和动态资源。 静态资源的特点:只要服务器没有修改这些文件,客户端每

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包