AJAX (2) — AJAX请求的基本操作、设置请求参数、发送POST请求,POST设置请求体、AJAX设置请求头信息

article/2025/11/3 15:19:34

目录

一、AJAX请求的基本操作

  1.server.js文件

  2.GET.html文件

二、AJAX设置请求参数 

三、AJAX发送POST请求

  1.POST.html文件

  2.server.js文件

四、POST设置请求体

五、AJAX设置请求头信息 

  1.预定义头信息

  2.自定义头信息 


一、AJAX请求的基本操作

  先设计出一个需求:

        如下图,点击按钮,向服务端发送请求,将服务端返回的响应体结果展示在div中,页面不刷新

        完成该需求需要准备前端与服务端内容,准备一个html文件和一个js文件

  1.server.js文件

//1.引入express
const { response } = require('express');
const express = require('express');//2.创建应用对象
const app = express()//3.创建路由规则
//request是对请求报文的封装
//response是对响应报文的封装
app.get('/server',(request,response)=>{//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*')//设置响应体response.send('HELLO AJAX GET')
});//4.监听端口启动服务
app.listen(5000,()=>{console.log('服务已经启动,5000端口监听中....');
})

  2.GET.html文件

<!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"><title>AJAX GET 请求</title><style>#result{width: 200px;height: 100px;border: solid 1px #90b;}</style>
</head>
<body><button>点击发送请求</button><div id="result"></div><script>//获取button元素const btn = document.getElementsByTagName('button')[0];const result = document.getElementById("result");//绑定事件btn.onclick = function(){//1.创建对象const xhr = new XMLHttpRequest();//2.初始化,设置请求方法和 urlxhr.open('GET','http://127.0.0.1:5000/server')//3.发送xhr.send();//4.事件绑定 处理服务端返回的结果xhr.onreadystatechange = function(){//判断(服务端返回了所有的结果)if(xhr.readyState === 4){//判断响应状态码 200 404 403 401 500if(xhr.status >= 200 && xhr.status < 300){//设置result的文本result.innerHTML = xhr.response;}}}}</script>
</body>
</html>

关于状态码可参考该博客:HTTP状态码icon-default.png?t=LA92https://blog.csdn.net/m0_59897687/article/details/120820112?spm=1001.2014.3001.5501

onreadystatechange 事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的状态信息。

下面是 XMLHttpRequest 对象的三个重要的属性:

属性描述
onreadystatechange存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState

存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

        0: 请求未初始化

        1: 服务器连接已建立

        2: 请求已接收

        3: 请求处理中

        4: 请求已完成,且响应已就绪

status200: "OK"
404: 未找到页面

        在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。

        当 readyState 等于 4 且状态为 200 时,表示响应已就绪

注意: onreadystatechange 事件被触发 4 次(0 - 4), 分别是: 0-1、1-2、2-3、3-4,对应着 readyState 的每个变化。

 

二、AJAX设置请求参数 

         在初始化这一步中,设置请求方法和 url 时,在 url 后用"?"分割加上参数,如果有多个参数,参数之间用"&"分隔开

xhr.open('GET','http://127.0.0.1:5000/server?a=100&b=200&c=300')

 

三、AJAX发送POST请求

  先设计出一个需求:

        如下所示,将鼠标放在div上面时,向服务端发起 post 请求,将响应体结果在服务端呈现出来

 

        完成该需求需要准备前端与服务端内容,准备一个html文件和一个js文件

 

  1.POST.html文件

<!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"><title>AJAX POST 请求</title><style>#result{width: 200px;height: 100px;border: solid 1px #903;}</style>
</head>
<body><div id="result"></div><script>//获取元素对象const result = document.getElementById('result');//绑定事件result.addEventListener('mouseover',function(){//1.创建对象const xhr = new XMLHttpRequest();//2.初始化,设置类型与urlxhr.open('POST','http://127.0.0.1:5000/server');//3.发送xhr.send();//4.事件绑定xhr.onreadystatechange = function(){//判断if(xhr.readyState === 4){if(xhr.status >=200 && xhr.status < 300){//处理服务端返回的结果result.innerHTML = xhr.response;}}}})</script>
</body>
</html>

  2.server.js文件

//1.引入express
const { response } = require('express');
const express = require('express');//2.创建应用对象
const app = express()//3.创建路由规则
//request是对请求报文的封装
//response是对响应报文的封装
app.post('/server',(request,response)=>{//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*')//设置响应体response.send('HELLO AJAX POST')
});//4.监听端口启动服务
app.listen(5000,()=>{console.log('服务已经启动,5000端口监听中....');
})

四、POST设置请求体

  在发送这一步骤中,请求体在send当中设置 ,请求体可以设置任意格式数据(只要服务端能处理)

        以URL参数形式设置:

xhr.send('a=100&b=200&c=300');

        

         以键值对形式设置

xhr.send('a:100&b:200&c:300');

五、AJAX设置请求头信息 

  1.预定义头信息

//设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

 Content-Type:设置请求体内容的类型

application/x-www-form-urlencoded:参数查询字符串的类型(是固定写法)

  2.自定义头信息 

/设置请求头
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.setRequestHeader('name','xupt');

        在server.js文件当中添加特殊的响应头

//可以接收任意类型的请求
app.all('/server',(request,response)=>{//设置响应头,设置允许跨域response.setHeader('Access-Control-Allow-Origin','*')//响应头response.setHeader('Access-Control-Allow-Headers','*')//设置响应体response.send('HELLO AJAX POST')
});

 


http://chatgpt.dhexx.cn/article/RG9wiKpi.shtml

相关文章

css ::after和::before详解

伪元素:before和:after添加的内容默认是inline元素 <style>p:before{content: "hello "}p:after{content: "you are handsome!"}</style><p>xx!</p>等价于下面的html结构:<p><span>hello </span>xxx!<span&g…

深入了解::before 和 ::after 伪元素

点击上方 前端瓶子君&#xff0c;关注公众号 回复算法&#xff0c;加入前端编程面试算法每日一题群 本文从最简单的开始&#xff0c;解释如何理解和使用::before和::after。然后再在实际使用场景中去应用它。 ::before和::after是什么? ::before和::after可以添加到选择器以创…

:after和:before的作用及使用方法

1. :before 和 :after 的主要作用是在元素内容前后加上指定内容&#xff0c;示例&#xff1a; HTML代码&#xff1a; <p>你好</p> CSS代码&#xff1a; p:before{content: Hello;color: red; } p:after{content: Tom;color: red; } 效果如图&#xff1a; 以上代码…

::before和::after伪元素的用法案例

CSS3中伪类采用单冒号写法&#xff0c;伪元素采用双冒号写法。 伪类举例——:hover,:link,:active,:target。 伪元素举例——::before,::after,::first-letter,::first-line,::selection。 一、介绍 今天写网页时遇到一个问题&#xff0c;视口的背景中插入一个小图标的话&a…

beforeSend 出现跨域问题,header里直接设置token就没问题----Day1

一开始前端调用后端接口出现跨域问题&#xff0c;右键查看元素&#xff0c;会有跨域错误提示&#xff0c;类似下图&#xff0c;后来找后端设置了一下&#xff0c;问题解决。可以登录获取token等参数了。 但是 请求设备列表时&#xff0c;beforeSend 中设置token却失败了&#x…

after和before的作用及使用方法

:after和:before的作用及使用方法 1、 :before 和 :after 的主要作用是在元素内容前后加上指定内容&#xff0c;示例&#xff1a; HTML代码&#xff1a; <p>你好</p>CSS代码&#xff1a; p:before{content: Hello;color: red; } p:after{content: Tom;color: r…

@Before, @BeforeClass, @BeforeEach 和 @BeforeAll之间的不同

1. 不同注解的区别如下&#xff1a; 特性 Junit 4Junit 5 在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll 在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll 在…

HTML中 :before 和 :after 的用法

1. :before 和 :after 的主要作用是在元素内容前后加上指定内容&#xff0c;示例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEed…

:before和:after的使用方法

伪元素可以让我们很方便的加入一个样式&#xff0c;比如在字体前加一个icon&#xff0c;或者加一个下换线&#xff0c;可以不占一个元素的位置&#xff0c;使用起来也很方便&#xff0c;现在介绍一下使用的方法。 注意&#xff1a;:before和:after中的content是必加项 <!DO…

@Before和@After的区别

通常我们使用JUnit的时候&#xff0c;会有一些方法需要提前或最后执行&#xff0c;则需要如下几种方式进行注解

css中::before ::after的用法

一、介绍 ::before和::after是伪元素&#xff0c;&#xff08;css3中为了与伪类做区别&#xff0c;伪元素采用双冒号的写法&#xff1b;但因为兼容性的问题&#xff0c;所以现在大部分还是统一的单冒号&#xff0c;比如:first-line、:first-letter、:before、:after等&#xf…

:before、:after伪元素的用法 !

:after 伪元素在元素之后添加内容。:before伪元素在元素之前添加内容。 这个伪元素允许创作人员在元素内容的最后面插入生成内容。默认地&#xff0c;这个伪元素是行内元素&#xff0c;不过可以使用属性 dispiay 改变这一点。 &#xff1a;before和&#xff1a;&#xff1a;be…

CSS中的:before和 :after

1. &#xff1a;before和 &#xff1a;after CSS中的:befor、:after都会创建一个伪元素&#xff0c;其中:befor创建的伪元素是所选元素的第一个子元素&#xff0c;:after创建的伪元素是所选元素的最后一个子元素。 :befor、:after创建的伪元素**默认样式为内联样式**。 &…

::before和::after伪元素的用法

一、介绍 css3为了区分伪类和伪元素&#xff0c;伪元素采用双冒号写法。 常见伪类——:hover,:link,:active,:target,:not(),:focus。 常见伪元素——::first-letter,::first-line,::before,::after,::selection。 ::before和::after下特有的content&#xff0c;用于在css渲…

after::和before::的用法

:after和:before的作用及使用方法 1. :before 和 :after 的主要作用是在元素内容前后加上指定内容&#xff0c;示例&#xff1a; HTML代码&#xff1a; <p>你好</p> CSS代码&#xff1a; p:before{content: Hello;color: red; } p:after{content: Tom;color: red;…

before 和after的用法

转载自&#xff1a;lur88 一、介绍 css3为了区分伪类和伪元素&#xff0c;伪元素采用双冒号写法。(:before和:after是在CSS2中提出来的&#xff0c;CSS3中的写法是::before和::after) 常见伪类——:hover,:link,:active,:target,:not(),:focus。 常见伪元素——::first-letter,…

before和after的用法

一、介绍 css3为了区分伪类和伪元素&#xff0c;伪元素采用双冒号写法。(:before和:after是在CSS2中提出来的&#xff0c;CSS3中的写法是::before和::after) 常见伪类——:hover,:link,:active,:target,:not(),:focus。 常见伪元素——::first-letter,::first-line,::before…

css中的before与after

before与after是css中的两个伪元素。所谓的伪元素就是一个虚假的元素&#xff0c;并插入到目标元素内容的之前与之后&#xff0c;我们一般可以通过css来控制它。其实before与after的编码是非常的简单的&#xff0c;就像我们在css中对他进行操作&#xff0c;比如设置他的背景颜色…

jquery中beforeSend和complete的使用 --- 提高用户体验设置请求头

beforeSend方法的用户主要有下面几个&#xff1a; 第一&#xff1a;用于在发送ajax请求之前设置请求头 即作为前端&#xff0c;如果我们希望在发送数据之前设置请求头&#xff0c;就可以像下面这么做&#xff1a; beforeSend: function(request) {request.setRequestHeader(&…

list对象转map stream /去重( 根据属性转Map或者分组)

根据某属性转换成Map &#xff0c; List<Student>转成Map<String, Student> 由List<Student>转成以Student的id当成Key&#xff0c;而Student当成Value的Map操作&#xff0c;即Map<String, Student>形式 List<Student> list new ArrayList<…