原生实现ajax

1 什么是ajax

  • AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

  • AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

  • AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

  • AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。

  • XMLHttpRequest 只是实现 Ajax 的一种方式。

ajax工作原理:

  • 简单来说,我们之前发的请求通过类似 form表单标签,a标签 这种方式,现在通过 运行js代码动态决定什么时候发送什么样的请求

  • 通过运行JS代码发送的请求浏览器可以不用跳转页面 ,我们可以在JS代码中决定是否要跳转页面

  • 通过运行JS代码发送的请求,接收到返回结果后,我们可以将结果通过dom编程渲染到页面的某些元素上,实现局部更新

HTML 页面

1. <DOCTYPE html>

这定义了文档类型和版本,告诉浏览器这是一个 HTML5 文档。

2. <html lang="en">

这定义了 HTML 文档的根元素,并设置文档的语言为英语(en)。

3. <head>

这是文档的头部,包含了元数据(如字符编码和标题)以及脚本(如 JavaScript)。

  • <meta charset="UTF-8">:定义文档使用的字符编码为 UTF-8。
  • <title>Title</title>:设置网页的标题为“Title”。
4. <script>

这定义了一个 JavaScript 函数 getMessage

  • 函数内部首先创建了一个新的 XMLHttpRequest 对象,用于发送异步请求。
  • 设置 onreadystatechange 回调函数,当请求的状态发生变化时执行。
  • 在回调函数中,检查请求是否完成(readyState == 4)且响应状态码为 200(表示成功)。
  • 如果请求成功,将响应的文本内容打印到控制台,并将其设置为具有 id="message" 的输入元素的值。
  • 使用 request.open 方法设置请求方法和 URL(/hello?username=zhangsan)。
  • 使用 request.send 方法发送请求。
5. <body>

这是文档的主体部分。

  • <button onclick="getMessage()">按钮</button>:定义一个按钮,当点击时调用 getMessage 函数。
  • <input type="text" id="message"/>:定义一个文本输入框,其 id 为 "message",用于显示从服务器获取的消息。

index.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script>function getMessage(){//实例化一个xmlHttpRequestvar request = new XMLHttpRequest();//设置xmlHttpRequest对象的回调函数request.onreadystatechange= function (){if(request.readyState == 4 && request.status ==200){console.log(request.responseText)var inputEle = document.getElementById("message")inputEle.value=request.responseText}}//设置发送请求的方式和请求的资源路径request.open("GET","/hello?username=zhangsan")//发送请求request.send();}</script>
</head>
<body>
<button onclick="getMessage()">按钮</button>
<input type="text" id="message"/>
</body>
</html>

Java Servlet

1. @WebServlet("/hello")

这是一个注解,表示这个 Servlet 响应的 URL 路径为 /hello

2. public class HelloServlet extends HttpServlet

定义了一个名为 HelloServlet 的类,它继承了 HttpServlet

3. service 方法

重写了 service 方法来处理 HTTP 请求。

  • 从请求中获取名为 "username" 的参数。
  • 使用响应的 writer 将 "hello" 和用户名拼接后的字符串写回给客户端。

HelloServlet.java

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");resp.getWriter().write("hello"+username);}
}

 

 

总结

      当用户在 HTML 页面上点击按钮时,JavaScript 函数 getMessage 会被调用,该函数会向服务器发送一个 GET 请求到 /hello?username=zhangsan。服务器上的 HelloServlet 会处理这个请求,并返回 "hellozhangsan" 字符串。然后,JavaScript 会将这个字符串设置到 ID 为 "message" 的输入框中。

这样,用户就可以在输入框中看到从服务器返回的消息了。

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

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

相关文章

unity学习(85)——同步节奏(tcp架构确实有问题)

挂的时间长了&#xff0c;就出现其他下线本地不destroy的情况了&#xff0c;而且此时再登录&#xff0c;新渲染中已经没有已经下线的玩家 unity这边就没有收到126&#xff01;&#xff01;&#xff01;125的问题是多种多样的&#xff01;&#xff01;&#xff01; 化简服务器w…

设计循环队列(队列oj)

1.设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。…

网站结构规范对于独立站的重要性

网站结构是指通过优化网站的内部结构和布局&#xff0c;以提高其在搜索引擎结果页面&#xff08;SERP&#xff09;中的排名和可见性的过程。 涉及到网站内部链接、导航菜单、网站url路径、网站地图等细节。 网站结构的优化可以更好地帮助搜索引擎了索引网站的内容&#xff0c…

【笔记】vscode debug进入site-packages包源码

选择左侧栏第三个图标&#xff0c;点击创建 launch.json 文件 选择 Python Debugger 选择Python文件 这里可以看到launch.json 文件 在configurations中添加键值对 "justMyCode": false在文件中打上断点&#xff0c;点击"三角符"号开始调试 按F11或者红框…

reportlab 生成pdf文件 (python)

1 安装 pip install reportlab2 应用场景 通过网页动态生成PDF文档大量的报告和数据发布用XML一步生成PDF 官网案例 3 PLATYPUS Platypus是“Page Layout and Typography Using Scripts”&#xff0c;是使用脚本的页面布局和印刷术的缩写&#xff0c;这是一个高层次页面布局…

【面试题】MySQL 事务的四大特性说一下?

事务是一个或多个 SQL 语句组成的一个执行单元&#xff0c;这些 SQL 语句要么全部执行成功&#xff0c;要么全部不执行&#xff0c;不会出现部分执行的情况。事务是数据库管理系统执行过程中的一个逻辑单位&#xff0c;由一个有限的数据库操作序列构成。 事务的主要作用是保证数…

Golang最快的Web框架

一、概述 Fiber是在Go最快的HTTP引擎Fasthttp之上构建的Go web框架。它的设计目的是在考虑到零内存分配和性能的情况下简化快速开发。它的特性&#xff1a; 稳健的路由提供静态文件极致性能内存占用空间低API终点中间件和Next支持快速服务器端编程模板引擎WebSocket支持Socke…

记一次kafkakerberos认证问题

1&#xff0c;报错信息 排查思路&#xff1a;检查kerberos配置文件 kerberos.kafka.principalkafka/huawe_baseSECURITY.COM kerberos.kafka.keytabPath/etc/huawe_base.keytab kerberos.kafka.krb5ConfPath/etc/krb5.conf但是查看kafka_client_jass.conf文件&#xff0c;发现…

网络基础-TCP/IP和OSI协议模型

一、OSI和TCP/IP模型 二、OSI七层模型 三、TCP/IP模型 参考&#xff1a;https://www.cnblogs.com/f-ck-need-u/p/7623252.html

由于bug发现的现象

//********************************* 示例1 ******************************* $flag (float)2; var_dump($flag); if ($flag 2) { } var_dump($flag);//输出结果 float(2) int(2)//********************************* 示例2 ******************************* $flag (floa…

关联规则挖掘(二)

目录 三、FP-增长算法&#xff08;一&#xff09;算法的背景&#xff08;二&#xff09;构造FP-树&#xff08;三&#xff09;生成频繁项集 四、关联规则的评价&#xff08;一&#xff09;支持度和置信度的不足&#xff08;二&#xff09;相关性分析 三、FP-增长算法 &#xf…

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式&#xff0c;下面列举三种发布方式&#xff1a; 单文件发布跨平台发布Docker发布 单文件发布 右键工程&#xff0c;选择“发布”&#xff0c;部署模式选择“独立”&#xff0c;目标运行时选择自己想要部署到的系统&#xff0c;我这里用…

问题:react函数中的state是上一次的值

场景 有一个聊天输入框组件&#xff0c;输入框上面有表情包组件。 通过redux创建了store&#xff0c;存储一个message的状态&#xff0c;用于表情包和输入框共享状态。 输入框通过设置value和onClick做了一个简单双向绑定&#xff0c;其中value的值为store里的message。 impor…

ChatGPT写作术:高效撰写顶级论文

ChatGPT无限次数:点击直达 ChatGPT写作术&#xff1a;高效撰写顶级论文 在当今信息爆炸的时代&#xff0c;如何撰写出高质量的论文成为许多研究者和学生的重要课题。借助人工智能技术的不断发展&#xff0c;像ChatGPT这样的语言生成模型能够为撰写论文提供有效的帮助。本文将介…

【Java框架】Spring框架(三)——Spring整合Mybatis及Spring声明式事务

目录 回顾Mybatis和新对象思路整理 Spring和MyBatis的整合步骤1. 创建Web工程&#xff0c;导入Spring和MyBatis的相关依赖2. 建立开发目录结构&#xff0c;创建实体类3. 创建数据访问接口和SQL映射语句文件4. 使用Spring配置文件配置数据源4.1 database.properties4.2spring配置…

全国产化无风扇嵌入式车载电脑在救护车远端诊断的行业应用

救护车远端诊断的行业应用 背景介绍 更加快速的为急症病人在第一时间开始进行诊断和治疗,是提高病人救助成功率的关键。因此&#xff0c;先进的救护系统正在思考&#xff0c;如何在病人进入救护车之后&#xff0c;立刻能够将救护车中各种检查仪器的信息快速的传回医院&#xf…

aws云靶场和一些杂记

aws靶场 在AWS靶场中&#xff0c;存在三个安全问题&#xff1a;1) 一个S3存储桶政策配置错误&#xff0c;允许公共访问&#xff0c;通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色&#xff0c;允许发送和接收消息&#xff0c;通过aws sqs命令行工具的receive-…

Javaweb知识之AJAX的概念的通俗理解(包含axios)

AJAX 一.概念&#xff1a; AJAX&#xff08;Asynchronous JavaScript And XML&#xff09;&#xff1a;异步的JavaScript和XML 异步 JavaScript的理解&#xff1a;就像你给朋友发了一条消息&#xff0c;然后继续做其他事情一样。你不需要等待朋友回复&#xff0c;可以继续做自…

JS-42-Node.js01-Node.js介绍

一、浏览器大战 众所周知&#xff0c;在Netscape设计出JavaScript后的短短几个月&#xff0c;JavaScript事实上已经是前端开发的唯一标准。 后来&#xff0c;微软通过IE击败了Netscape后一统桌面&#xff0c;结果几年时间&#xff0c;浏览器毫无进步。&#xff08;2001年推出…

C++面向对象程序设计-北京大学-郭炜【课程笔记(七)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;七&#xff09;】 1、类型转换运算符2、自增、自减运算符的重载3、继承和派生的基本概念3.1、基本概念3.2、派生类对象的内存空间 4、继承关系和复合关系4.1、继承关系的使用4.2、复合关系的使用 5、派生类覆盖基类成员6…