【AJAX】原生AJAX

news2024/9/27 9:29:46

目录

一、AJAX的使用场景

二、原生的AJAX

三、HTTP :

1、原生AJAX GET请求

1、原生AJAX  POST请求

 四、总结


一、AJAX的使用场景


1、页面不刷新的情况下,浏览器等搜索框输入某关键字出现多个搜索选择内容,如下图所示:

2、登录、注册界面输入内容检测内容是否符合要求(输入的内容是否空、用户名是否已注册过),如下图所示:


3、左侧分类,当鼠标划入显示二级分类(懒加载);


4、网页的分页获取,当网页下拉到底部,开始加载新的数据。

二、原生的AJAX

AJAX全称Asynchronous JavaScrip And XML,就是异步的JS和XML。
通过AJAX可以在浏览器中向服务器发送异步请求,最大优势:无需刷新获取数据。                       AJAX不是新的编程语言,而是一种将现有标准组合在一起使用的新方式。

AJAX的特点
1、优点
(1)可以无需刷新页面与服务器端进行通信。
(2)允许你根据用户事件(键盘、鼠标、表单、文档......)来更新部分页面内容。[浏览器搜索框]
2、缺点
(1)没有浏览历史,不能回退
(2)存在跨域问题(同源)
(3)seo不友好

三、HTTP :

参考:HTTP

1、原生AJAX GET请求

客户端代码:

<script>
    // 1、创建对象
    const xhr = new XMLHttpRequest();
    // 2、初始化,设置请求的方法和url
    xhr.open('GET', 'http://127.0.0.1:8000/server');
    // 3、发送
    xhr.send();
    // 4、时间绑定 返回服务器端返回的结果
    // on:when当...时候
    // readystate:是xhr对象中的属性,表示状态 0(未初始化),1(open方法已经调用完毕),2(send方法已经调用完毕),3(服务端返回部分结果),4(后端返回的所有结果),所以onreadystatechange会触发4次
    // change:改变
    xhr.onreadystatechange = function () {
        // 判断(服务端返回所有结果)
        if (xhr.readyState === 4) {
            // 判断响应状态码 200 404 403 401 500
            // 响应状态码中2XX都是表示成功
            if (xhr.status >= 200 && xhr.status < 300) {
                // 处理结果:行 头 空行 体
                console.log(xhr.status); //状态码
                console.log(xhr.statusText);//状态字符串
                console.log(xhr.getAllResponseHeaders());//所有响应头
                console.log(xhr.response);//响应体
            } else {

            }

        }
    }
</script>

服务端代码(node.js)【express框架的基本使用】

// 服务端准备
// 1、引入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')

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

// 5、启动服务,终端输入: node server.js基本使用.js ,启动之后在浏览器输入127.0.0.1:8000

安装Express框架:基于node.js平台,快速、开放、极简的Web开发框架。node.js内容(前提要安装node.js应用程序)

打开vscode/cmd的终端输入(做初始化):npm init --yes,出现package.json(node.js的包管理下工具pakeage.json文件主要是用来记录这个项目的详细信息的,它会将我们在项目开发中所要用到的包,以及项目的详细信息等记录在这个项目中。方便在以后的版本迭代和项目移植的时候会更加的方便。也是防止在后期的项目维护中误删除了一个包导致的项目不能够正常运行。使用npm init初始化项目还有一个好处就是在进行项目传递的时候不需要将项目依赖包一起发送给对方,对方在接受到你的项目之后再执行npm install就可以将项目依赖全部下载到项目里。

http://127.0.0.1:8000就是你本地接口的地址

出现以下对话,直接回车即可:

安装express框架终端输入: npm i express,出现package-lock.json和node_modules

(使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性:可以设置中间件来响应 HTTP 请求,定义了路由表用于执行不同的 HTTP 请求动作,可以通过向模板传递参数来动态渲染 HTML 页面。

http内置模块用起来很复杂,开发效率低;Express是基于内置的http模块进一步封装出来的,能够极大的提高开发效率。使用Express可以方便、快速的创建Web网站服务器或API接口的服务器。)

测试:

输入node 服务器js文件名.js,显示监听内容表示服务器开启

客户端运行结果


 注意:客户端和服务端的url要一致

 数据传输方式:GET请求设置请求参数是拼接到url上:


1、原生AJAX  POST请求

客户端代码

<script>
    // 1、创建对象
    const xhr = new XMLHttpRequest();
    // 2、初始化:设置请求类型和url
    xhr.open('POST', 'http://127.0.0.1:8000/server');
    // 3、发送
    xhr.send()
    // 4、事件绑定
    xhr.onreadystatechange = function () {
        // 判断
        if (xhr.readyState === 4) {
            if (xhr.status >= 200 && xhr.status < 300) {
                console.log(xhr.response);
            }
        }
    };
</script>

服务端代码

// 服务端准备
// 1、引入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')

});
app.post('/server',(request,response)=>{
    // 设置响应头:设置运行跨域
    response.setHeader('Access-Control-Allow-Origin','*')
    // 设置响应
    response.send('HELLO AJAX POST')

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

// 5、启动服务,终端输入: node server.js基本使用.js ,启动之后在浏览器输入127.0.0.1:8000

客户端运行结果

 


注意

数据传输方式: POS请求参数设置在请求体

 四、总结

AJAX 中GET请求和PST请求区别:

1、GET一般用于获取/查询资源信息(请求数据)。POST一般用于更新信息(提交数据);

2、GET在URL中传递信息,数据放在请求头,安全性低,大小有限制。

3、POST是在请求体中传递数据,安全性高,数据存放在虚拟载体;

4、GET的执行效率比POST高。

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

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

相关文章

前端JS如何实现对复杂文本进行句子分割,将每句话拆分出来?

文章目录 切割句子背景简介前端如何使用NLP&#xff1f;技术实现 切割句子背景简介 开发中遇到一种场景&#xff0c;在做文本翻译这块需求时&#xff0c;需要对输入的原文进行一句一句话的拆分出来&#xff0c;传给后台&#xff0c;获取每句话的翻译结果&#xff0c;便于实现页…

clickhouse系统日志引起的root目录磁盘满的问题处理

问题及追踪 对于生产环境&#xff0c;尤其是配置较低的生产环境&#xff0c;一定要注意资源的使用 今天就遇到一个问题&#xff0c;服务器磁盘接近满了&#xff0c;部署的平台服务异常&#xff0c;无法提供服务 简单说一下客户环境&#xff1a;客户只有老的Windows server 服…

hydra的简单使用

Hydra是一款开源的暴力PJ工具&#xff0c;集成在kali当中。 参数功能-l指定用户名-p指定密码-L指定用户名字典-P指定密码字典-C指定所用格式为“user:password”的字典文件-en null&#xff0c;表示尝试空密码-es same&#xff0c;把用户名本身当做密码进行尝试-er 反向&#…

哈工大计算机网络课程网络层协议详解之:距离向量路由算法与层次化路由算法

文章目录 距离向量路由算法Bellman-Ford算法举例距离向量路由算法 层次化路由算法层次化路由AS示例自治系统间&#xff08;Inter-AS&#xff09;路由任务 在上一节中我们介绍了路由算法中的链路状态路由算法&#xff0c;介绍它基于Dijkstra算法来实现&#xff0c;同时分析了其缺…

Jmeter接口测试断言详解

目录 前言&#xff1a; 响应断言 Apply to (响应断言的应用范围) 要测试的响应字段(可通过取样器结果查看) 响应断言&#xff1a;模式匹配 Json断言 前言&#xff1a; 在JMeter中进行接口测试时&#xff0c;断言是一个非常重要的概念。断言允许我们验证接口的响应是否符…

十七、docker学习-docker-compose安装nginx反向代理

compose安装nginx反向代理 IDEA安装docker插件 idea安装docker插件。Dockerfile、docker-compose.yml文件大部分内容会有提示信息。方便开发人员编写配置文件。 https://plugins.jetbrains.com/plugin/7724-docker/versions基础镜像 docker pull 1.21.0-alpine docker pull…

一文读懂SQL中的Aggregate(聚合) 函数和Scalar(标准)函数

目录 前言&#xff1a; 一、SQL Aggregate 函数 1、AVG() 函数 2、count()函数 3、MAX() 函数 4、MIN() 函数 5、SUM() 函数 6、SQL GROUP BY 语法 7、SQL HAVING 子句 8、SQL EXISTS 运算符 9、SQL UNION 操作符 二、SQL Scalar 函数 1、SQL UCASE() 函数 2、SQ…

Swift 周报 第三十二期

文章目录 前言新闻和社区现已提供新的设计资源visionOS SDK 现已发布 提案Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十三期&#xff0c;每个模块已初步成型。各位读者如果有好的提议&#xff0c;欢迎在文末留言。 欢迎投稿或推荐内容。…

力扣 -- 174. 地下城游戏

题目链接&#xff1a;174. 地下城游戏 - 力扣&#xff08;LeetCode&#xff09; 下面是用动态规划的思想解决这道题的过程&#xff0c;相信各位小伙伴都能看懂并且掌握这道经典的动规题目滴。 参考代码&#xff1a; class Solution { public:int calculateMinimumHP(vector&…

【上海海事大学806】23上岸学姐经验分享

今天很荣幸请到了一位23上岸上海海事大学的学姐来给大家做一期经验分享&#xff01;&#xff01;&#xff01;我之前也有做过关于上海海事大学806的一些真题解析以及重点勾画&#xff0c;希望能帮到大家&#xff0c; 一、学姐经验分享 很荣幸你能看到我的考研经验分享&#x…

第七章 版本控制器——git

第七章 版本控制器——git 一、git的历史二、git的特点与发展1、git的特点2、git与github 二、git的安装与注册1、git的安装2、git的使用&#xff08;1&#xff09;github注册&#xff08;2&#xff09;创建远端仓库&#xff08;3&#xff09;将远端仓库镜像复制到本地仓库指令…

LIS实验室信息管理系统功能模块(Oracle数据库、Client/Server架构)

一、系统框架简介 1、技术框架 &#xff08;1&#xff09;总体框架&#xff1a; ♦SaaS架构的Client/Server应用 ♦服务可伸缩&#xff0c;多服务协同 ♦服务可拆分&#xff0c;功能易扩展 &#xff08;2&#xff09;技术细节&#xff1a; ♦体系结构&#xff1a;Client/Serv…

零基础小白暑假QT实训1

一.前言 今天就要开始暑假短学期的实训了&#xff0c;本来课堂也要求记笔记&#xff0c;这里我就开始分享我将来五天的学习过程吧。 二.QT安装过程 首先&#xff0c;提供一下我的链接&#xff1a; 本来上传到我的阿里云盘了的&#xff0c;结果压缩包不给分享&#xff0c;抱歉…

互联网高可用架构探讨 | 京东云技术团队

高可用指标与问题 高可用&#xff0c;英文单词High Availability&#xff0c;缩写HA&#xff0c;它是分布式系统架构设计中一个重要的度量。业界通常用多个9来衡量系统的可用性&#xff0c;如下表&#xff1a; 既然有可用率&#xff0c;有一定会存在不可用的情况。系统宕机一般…

【动态规划上分复盘】下降路径最小和|礼物的最大价值

欢迎 前言一、动态规划五部曲二、下降路径最小和思路&#xff1a;动态规划解法具体代码如下 三、礼物的最大价值思路&#xff1a;动态规划具体代码如下: 总结 前言 本文主要讲述动态规划思路的下降路径最小和以及礼物的最大价值两道题。 一、动态规划五部曲 1.确定状态表示&a…

61. 旋转链表

61. 旋转链表 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 旋转链表 https://leetcode.cn/problems/rotate-list/ 完成情况&#xff1a; 解题思路&#xff1a; 参考代码&#xff1a; package 西湖算法题解_…

【C语言】指针进阶[中](函数指针、函数指针数组、指向函数指针数组的指针)

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 函数指针 1.1 函数指针的用途 2. 函数指针数组 3. 指向函数指针数组的指针 1. 函数指针 这里的 * 可以省略: 因为函数指针本质上是一个指针&#xff0c;存储了一个函数的地址&#xff0c;因此可以通过函数指针调用对…

解锁虚拟人IP“悦小满”新玩法,怎么用动捕设备化身多重身份?

在数字时代&#xff0c;虚拟人IP成为文化产业与数字技术、数字平台相融合的产物。虚拟人IP是文化IP文化产业发展的新内核。 广东网络广播电视台顺应时代发展&#xff0c;推出了全球首个粤语虚拟偶像“悦小满”&#xff0c;具备着Z世代所喜爱的2.5次元的3D虚拟形象&#xff0c;…

React 企业级开发必备, 我来带你快速入门 !

目录 一、为什么我来安利你学习 React? 二、使用 React 的前置工作 三、简易 demo 学开发 3.1、jsx语法 3.2、函数式组件 demo 3.3、简单类组件定义 3.4、复杂类组件定义 3.4.1、state 写法一&#xff1a;复杂式 写法二&#xff1a;简便式 3.4.2、props 类型限制…

界面干净整洁的windows桌面清单软件有哪些

无论是工作还是日常生活&#xff0c;我们都有各种各样的任务需要完成。然而&#xff0c;如果不进行有效的规划和管理&#xff0c;很容易导致遗漏和拖延&#xff0c;影响工作效率。而一个界面干净整洁的Windows桌面清单&#xff0c;能够帮助我们更好地规划和安排待办事项&#x…