Ajax 前后端数据交互

news2025/1/21 9:42:39

ajax 数据交互

今天又是奋斗的一天,行吧,来学习ajax

    • ajax 数据交互
        • 什么是ajax?
        • ajax的`优势`
        • ajax的使用
            • 创建一个ajax对象
            • 配置这个对象
            • 发送请求
            • 接受返回过来的数据
        • ajax状态码
        • readystatechange
        • responseText
    • ajax请求方式
      • 封装一个属于自己的ajax

在这里插入图片描述

什么是ajax?

  1. ajax全称 async javascript and xml
  2. 具有前后端交互的能力,如果我们使用form表单向后端去提交数据,我们的页面在提交的时候将会刷新
  3. ajax是客户端向服务端发送信息的工具,以及接受响应的工具!
  4. ajax是一个 默认异步 执行机制的功能

ajax的优势

我总结起来归根于以下几点:

  1. 原生js就可以使用,不需要插件的支持
  2. 用户体验好,页面不需要刷新就可以更新数据
  3. 减少服务端和带宽的负担

ajax的使用

  1. 创建一个ajax对象 new XMLHttpRequest()
  2. 配置这个对象–open
  3. 发送请求—send
  4. 接受相应 onload或者onreadystatechange事件监听

具体步骤看下面代码

创建一个ajax对象
  let xhr=new XMLHttpRequest()
配置这个对象

xhr.open(请求方式,请求地址,同步还是异步)

        xhr.open('get', 'https://www.baidu.com')
//第三个参数默认是异步
发送请求
xhr.send()
接受返回过来的数据

要想接收到响应,必须遵从下面条件:

  1. 本次HTTP请求是成功的,也就是我们之前所说的http状态吗为200~299
  2. ajax对象也有自己的状态吗,用来表示本次ajax请求中各个阶段
 xhr.onload = () => {
            console.log(xhr.responseText);
        }
 
 //或者
 
        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4) {
                console.log(xhr.responseText);
            }
        }

ajax状态码

ajax状态码—xhr.readyState

是用来表示一个ajax请求的全部过程中的某一个状态

  • readyState===0:表示初始化完成,也就是open方法还没执行
  • readyState===1:表示配置已经完成,也就是执行完open之后
  • readyState===2:表示send方法已经执行完毕
  • readyState===3:表示正在解析响应内容(只有一部分解析了)
  • readyState===4: 表示响应内容已经解析完成,可以在客户端使用了

当readyState===4的时候,我们就可以正常使用服务端的数据了。再配合http状态码为200~299

ajax对象中有一个是xhr.status,这个是用来记录请求的http状态码的

当两个条件都满足的时候,我们的请求就完成了!

readystatechange

  • 在ajax对象中有一个事件,叫readystatechange
  • 这个事件是专门来监听ajax对象的readystate的值的
  • 只要值发生变化,就会触发这个事件
  • 所以我们可以采用这个事件来监听readystate中的值
const xhr = new XMLHttpRequest()
xhr.open('get', './data.php')

xhr.send()

xhr.onreadyStateChange = function () {
  // 每次 readyState 改变的时候都会触发该事件
  // 我们就在这里判断 readyState 的值是不是到 4
  // 并且 http 的状态码是不是 200 ~ 299
  if (xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)) {
    // 这里表示验证通过
    // 我们就可以获取服务端给我们响应的内容了
  }

responseText

记录服务端给我们的响应体内容的

ajax请求方式

再进入下面这个话题之前,我们先全局安装一个json-server,来利用json文件模拟后端阶段接口

npm i json-server -g

ajax请求方式有很多种,下面我总结了比较常用的五种

get —偏向于获取数据

post—偏向于提交数据

put —偏向于更新数据(整个覆盖)

patch —偏向于部分修改数据

delete —偏向于删除数据

以上五种,但工作中比较常用的是get和post

封装一个属于自己的ajax

我这里就简单封装,利用类似于这样的思路,封装完成,使用这个封装的ajax,请阅读一下下面这个手册--这个是配合json-server虚拟后端接口使用的

function changeObj(obj) {
    let arr = []
    for (i in obj) {
        arr.push(obj[i])
    }
    return arr
}

function shuAjax(options) {
    let obj1 = {
        url: '',
        method: 'GET',
        async: true,
        data: {},
        headers: {
            "Content-Type": "application/form-www-urlencoded",
            "Content-Type": "application/json"
        },
        success: function (res) {
            console.log(res);
        },
        error: function (err) {
            console.log(err);
        }
    }
    let { url, method, async, data, headers, success, error } = {
        ...obj1,
        ...options
    }

    switch (method.toUpperCase()) {
        case 'delete':
    }



    //首先设置基本的XML
    let xhr = new XMLHttpRequest()
    xhr.open(method, url, async)
    //设置请求头
    let newArr = changeObj(headers)
    for (let i = 0; i < newArr.length; i++) {
        xhr.setRequestHeader("Content-Type", newArr[i])
    }

    //作个判断,如果不是get和delete的话就要传值
    if (method.toUpperCase() === 'get' || method.toUpperCase === 'delete') {
        xhr.send()
    }
    else {
        xhr.send(JSON.stringify(data))
    }
    xhr.onload = () => {
        console.log(xhr.responseText);
    }
}

shuAjax使用方法:

格式:shuAjax({})

对象中的参数:

url 必须传的参数 --如果是要使用put PATCH delete需要在路由最后面加上所要访问的id值

method 可选 不选为get

data 可选 当用post PATCH put的时候传入一个对象形式的参数

使用示例

 <button id="btn1">get</button>
    <script src="./shuAjax.js"></script>
    <script>
        btn1.onclick = () => {
            shuAjax({
                url: 'http://localhost:3000/users/22',
                method: 'PUT',
                data: {
                    username: 'kang',
                    password: 1234556565
                }
            })
        }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/408585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年最新最详细在IDEA中配置Tomcat(含有详细图解过程)、建立使用IEDA建立一个Web项目的案例

1、首先已经成功安装过tomcat 如果没有成功安装&#xff0c;参考这篇tomcat安装教程(安装成功可忽略)&#xff1a;https://blog.csdn.net/weixin_43304253/article/details/117001797 2、在IDEA中配置tomcat的详细步骤 2.1、run ->Edit Confifurations 2.2 、点击加号 2.…

微信小程序自定义导航栏,实现不同用户角色登陆后显示不同的tabbar(避坑版)

在我们开发小程序的过程中&#xff0c;会遇到权限登录问题&#xff0c;不同的角色登录后显示的底部导航栏tabbar是不一样的。网上看到了很多的博客&#xff0c;多多少少会有些坑&#xff0c;会遇到问题。今天这篇博客就可以一次性解决。 了解概念 自定义tabbar 使用方法 app…

React修改Antd组件样式的方法

1.修改默认组件样式和写自己组件样式的区别 当我们写自己的样式时&#xff0c;在组件页面中定义class名称&#xff0c;再在less文件中对这个class定义样式。 //index.js import React,{useState} from react; import styles from ./index.less;const Index (props) >{ret…

36.一文讲透JavaScript日期对象Date,时间戳、1970、date方法、date计算

文章目录JavaScript日期和时间处理方法Date对象的创建new Date()new Date(milliseconds)1970年之前的时间&#xff1f;new Date(date_str)new Date(year, month, date, hours, minutes, sec, ms)Date对象的方法获取日期内容设置日期内容日期的自动校准日期转为数字、日期差值Da…

Node.js安装及环境配置之Windows篇

Node.js安装及环境配置之Windows篇Node.js安装及环境配置之Windows篇一、安装环境二、安装node.js步骤三、前期准备四、开始安装五、环境配置Node.js安装及环境配置之Windows篇 一、安装环境 1、本机系统&#xff1a;Windows 10&#xff08;64位&#xff09; 2、Node.js&…

纯js判断文件流格式类型:pdf,doc,docx,xls,xlsx,ppt,pptx一次搞定!

目录使用js判断文件类型的场景方法特点输入输出方法步骤1. 查看每种格式文件的16进制码&#xff0c;提取不同文件类型的“特征数”。2. 先判断大类型&#xff0c;在具体大类下判断小类型项目地址&#xff1a;纯前端基于react实现的多类型文件预览&#xff1a;通过arraybuffer判…

uniapp全局组件全局使用(不在每个页面template使用,仅支持H5),函数式调用全局组件方法

最简单的使用&#xff0c;在 main.js 编写如下代码&#xff0c;即可将 xxx 组件在每个页面显示 // main.js// 引入组件 import xxx from "/components/xxx.vue";// 将该组件挂载在document.body下 document.body.appendChild(new xxx().$mount().$el); 函数式调用全…

JS高级知识总结

文章目录1. this指向问题2. 对象进阶2.1 对象的定义和使用2.2 对象访问器2.2.1 Getter2.2.2 Setter2.3 对象构造器2.4 对象原型2.4.1 prototype属性2.4.2 \_\_proto\_\_ 属性2.4.3 constructor属性2.4.4 原型链2.5 Object对象2.5.1 管理对象2.5.2 保护对象3. 函数进阶3.1 函数的…

.Net Core中间件

目录 一、什么是中间件 二、中间件的用途 三、中间件的三个概念 四、自定义中间件 五、ASP.NET Core附带中间件组件 六、中间件和过滤器的区别 一、什么是中间件 在浏览网站或者使用手机App加载内容的时候&#xff0c;浏览器或者手机App其实在向Web服务器发送HTTP请求。服…

NodeJS安装(npm包管理器)

1、nodejs下载 windows下的NodeJS安装是比较方便的&#xff0c; 只需要登陆官网&#xff08;Node.js&#xff09;&#xff0c;直接点击64-bit下载安装 2、安装过程基本直接“NEXT”&#xff0c;NodeJS已经集成了npm&#xff0c;所以npm也一并安装好了 3、在cmd窗口输入node -…

React-DevTools开发者工具安装

React开发者工具最简单的安装方式自然是科学上网&#xff0c;通过Google Chrome浏览器访问应用商店安装了。以下介绍另一种安装方式&#xff1a;基于 react-devtools的GitHub项目源码编译进行插件安装。 目录 React-DevTools&#xff1a;GitHub项目地址 React-DevTools&#x…

修改elementUI中el-date-picker内置样式

一.编写背景 今天正在日常的需求编写和bug调试中&#xff0c;产品提出了这样一个需求。为了满足用户在新增数据时的便捷准确&#xff0c;时间选择格式为“年月日时”&#xff0c;即用户不需要选择分合秒&#xff0c;换句话说就是下图中红色框的两项不需要。 二.问题分析。 当时…

基于vscode开发vue3项目的详细步骤教程 3 前端路由vue-router

1、Vue下载安装步骤的详细教程(亲测有效) 1_水w的博客-CSDN博客 2、Vue下载安装步骤的详细教程(亲测有效) 2 安装与创建默认项目_水w的博客-CSDN博客 3、基于vscode开发vue项目的详细步骤教程_水w的博客-CSDN博客 4、基于vscode开发vue项目的详细步骤教程 2 第三方图标库FontAw…

如何使用 JavaScript 读取文件

您可以使用 JavaScript File API 加载选定文件的内容。本节介绍 File API 的基本用法。 现在让我们看看如何使用 File API。 使用 JavaScript 读取文件概述 选择带有输入元素的文件 在 HTML 中&#xff0c;您可以通过将 input 元素的 type 属性设置为 file 来选择文件。 &…

vue 在for循环中设置ref并获取$refs

一、单循环动态设置ref 1.设置&#xff1a;【:ref“‘XXX’ index”】XXX -->自定义ref的名字 2.获取&#xff1a;let ref eval(‘this.$refs.XXX’ index)[0] 3.示例&#xff1a; 代码如下所示 <template><div class"ref_test"><div v-fo…

常用的几种布局方式---Flex 布局(垂直居中展示)

常用的几种布局方式---Flex 布局(垂直居中展示&#xff09; 前言一、默认使用静态布局二、flex布局1.父元素container1.1.display:flex1.2.flex-direction属性1.3.主轴与侧轴1.4.justify-content属性1.5.align-items属性1.6.flex-wrap属性2.子元素items 前言 怎样让一个元素在…

Vue2 概述

什么是Vue 引用官网的一段话:Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项…

如何统计前端项目有多少行代码

方法一&#xff1a;输入命令 前端项目核心代码主要在src目录下&#xff0c;打开项目找到src目录&#xff0c;右键点击 git bash here &#xff0c;然后输入命令&#xff1a; 1.包括空行&#xff08;会列出每个文件的代码行数&#xff09;&#xff1a; find . "(" …

Vue注册组件的几种方式,你都知道吗?

在开发中,经常需要将业务进行组件化,我们就需要去注册组件,下面列举几种常用的注册组件的方法 局部注册组件 1.首先需要将要注册的组件进行引入 2.在script标签中进行注册,注意:组件注册的名字和引入的名字需要保持一致即可进行简写 3.在template标签中以html的标签格式进行使…

web前端面试高频考点——Vue的高级特性(动态组件、异步加载、keep-alive、mixin、Vuex、Vue-Router)

系列文章目录 内容参考链接Vue基本使用Vue的基本使用&#xff08;一文掌握Vue最基础的知识点&#xff09;Vue通信和高级特性Vue组件间的通信及高级特性&#xff08;多种组件间的通信、自定义v-model、nextTick、插槽&#xff09;Vue高级特性Vue的高级特性&#xff08;动态组件…