AJAX (异步的JavaScript 和 XML)

目录

1、什么是AJAX

2、作用

1)与服务器通信

2)异步交互(更新局部页面)

3、AJAX 的基本工作原理

4、应用举例

5、jQuery与AJAX

6、使用jQeury实现AJAX

1)$.ajax():发送异步请求

2)$.get():发送get请求

3)$.post():发送post请求


1、什么是AJAX

AJAX(Asynchronous JavaScript and XML)是一种创建交互式、快速动态网页应用的网页开发技术。它使用JavaScript、XML(或JSON)和XMLHttpRequest对象,可以在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。

AJAX 的主要特点是异步性(客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作;同步指:浏览器页面在发送请求给服务器,在服务器处理请求的过程中,浏览器页面不能做其他的操作),这意味着它可以在不阻塞用户界面的情况下与服务器进行通信。传统的网页请求(例如通过表单提交)通常需要等待整个页面重新加载,而 AJAX 则允许只更新页面的一部分,从而提供更好的用户体验。

2、作用

1)与服务器通信

与服务器进行数据交换:通过AJAX可以给服务器发送请求,服务器将数据直接响应回给浏览器。

使用AJAX和服务器进行通信,达到使用 HTML+AJAX替换JSP页面:

变为:

浏览器发送请求servlet,servlet 调用业务逻辑层后将数据直接响应回给浏览器页面,页面使用 HTML 进行数据展示。 

2)异步交互(更新局部页面)

可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如用于搜索联想、用户名是否可用的校验等。

在用户名的输入框输入用户名,当输入框一失去焦点,如果用户名已经被占用就会在下方展示提示的信息。这整个过程中没有页面的刷新,只是在局部展示出了提示信息,这就是更新局部页面的效果。

3、AJAX 的基本工作原理

  1. 创建 XMLHttpRequest 对象:这是 AJAX 通信的基础。这个对象允许 JavaScript 向服务器发送 HTTP 请求,并接收服务器的响应。
  2. 设置请求:使用 XMLHttpRequest 对象的 open() 方法来指定请求类型(GET、POST 等)、请求的 URL 以及是否异步处理请求。
  3. 发送请求:调用 XMLHttpRequest 对象的 send() 方法来发送请求。对于 POST 请求,可能需要将请求体作为参数传递给 send() 方法。
  4. 处理响应:设置 XMLHttpRequest 对象的 onreadystatechange 事件处理程序来监听服务器的响应。当服务器的响应准备好时,这个事件处理程序会被触发。然后,可以通过 XMLHttpRequest 对象的 responseText 或 responseXML 属性来获取响应数据。

在Web 中,很多库和框架(如 jQuery、Axios、Fetch API 等)提供了更简洁、更强大的 AJAX 功能,可以更容易地实现 AJAX 功能。

4、应用举例

用户注册功能中,实现当用户名输入框失去焦点时,校验用户名是否在数据库已存在。

分析:

  • 前端
    • 1. 给用户名输入框绑定光标失去焦点事件onblur
    • 2. 发送 ajax请求,携带username参数
    • 3. 处理响应:是否显示提示信息
  • 后端
    • 1. 接收用户名
    • 2. 调用service查询User:此处不做业务逻辑处理,直接返回true
    • 3. 返回标记

创建SelectUserServlet类:

@WebServlet("/selectUserServlet")
public class SelectUserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 接收用户名String username = request.getParameter("username");//2. 调用service查询User对象,此处不进行业务逻辑处理,直接给flag赋值true,即用户名占用boolean flag = true;//3. 响应标记response.getWriter().write("" + flag);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

前端JavaScript部分:

//1. 给用户名输入框绑定 失去焦点事件
document.getElementById("username").onblur = function () {//2. 发送ajax请求// 获取用户名的值var username = this.value; //this : 给谁绑定的事件,this就代表谁//2.1. 创建核心对象var xhttp;if (window.XMLHttpRequest) {xhttp = new XMLHttpRequest();} else {// code for IE6, IE5xhttp = new ActiveXObject("Microsoft.XMLHTTP");}//2.2. 发送请求xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username="+username);xhttp.send();//2.3. 获取响应xhttp.onreadystatechange = function() {if (this.readyState == 4 && this.status == 200) { //说明已经成功响应数据//alert(this.responseText);//判断if(this.responseText == "true"){//用户名存在,显示提示信息document.getElementById("username_err").style.display = '';}else {//用户名不存在 ,清楚提示信息document.getElementById("username_err").style.display = 'none';}}};
}

5、jQuery与AJAX

jQuery对AJAX技术进行了封装和简化。AJAX功能强大,但使用起来相对复杂,涉及到XMLHttpRequest对象的创建、事件监听、状态码判断等多个步骤。而jQuery通过提供简洁易用的API,极大地简化了AJAX的开发过程。

具体来说,jQuery中的$.ajax()方法是一个功能强大的函数,它封装了XMLHttpRequest对象的创建和调用过程,并提供了丰富的配置选项和回调函数,以便开发者能够灵活地处理AJAX请求。使用$.ajax()方法,开发者可以指定请求的URL、请求类型(GET、POST等)、发送的数据、预期返回的数据类型等,并定义请求成功或失败时的回调函数。

此外,jQuery还提供了其他一些简化的AJAX函数,如$.get()、$.post()等,这些函数在内部也是基于$.ajax()方法实现的,但使用上更加简单直观,适用于常见的GET和POST请求场景。

通过使用jQuery的AJAX功能,可以更加高效地进行异步通信,实现网页的动态加载和更新,提升用户体验。同时,jQuery的跨浏览器兼容性也保证了AJAX功能在各种浏览器上的稳定运行。

6、使用jQeury实现AJAX

1)$.ajax():发送异步请求

$.ajax({键值对});

$.ajax({url:"ajaxServlet1" , // 请求路径type:"POST" , //请求方式//data: "username=ss&age=23",//请求参数data:{"username":"ss","age":23},success:function (data) {alert(data);},//响应成功后的回调函数error:function () {alert("出错了")},//表示如果请求响应出现错误,会执行的回调函数dataType:"text"//设置接受到的响应数据的格式});

2)$.get():发送get请求

$.get(url, [data], [callback], [type])
参数:url:请求路径  data:请求参数  callback:回调函数  type:响应结果的类型

3)$.post():发送post请求

$.post(url, [data], [callback], [type])
参数:url:请求路径  data:请求参数  callback:回调函数  type:响应结果的类型

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

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

相关文章

2024五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

解决npm install安装node-sass包容易失败的问题

具体问题如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…

SpringBoot和Axios数据的传递和接收-Restful完全版

文章目录 一、基础知识铺垫Axios使用HTTP请求方式数据传输方式SpringBoot获取数据的方式 二、基础传递代码示例(一)Path Variables(二)Get、DeleteRequestParamModelAttribute (三)Post、Put、PatchRequest…

FreeRTOS学习 -- 中断配置

一、什么是中断 中断时微控制器一个很常见的特性,中断是由硬件产生,当中断产生以后CPU就会中断当前的流程而去处理中断服务,Cortex-M内核的MCU提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。 二、中断优先级分…

土壤湿度传感器:助力农业现代化

随着科技的飞速发展,越来越多的先进技术被应用到农业生产中。其中,土壤湿度传感器作为现代农业的重要工具,正逐渐改变着传统农业的生产方式,成为农业现代化的秘密武器。 精确监测:土壤湿度传感器能够实时、精确地监测土…

WIN7用上最新版Chrome

1.下载WIN10最新版Chrome的离线安装包 谷歌浏览器 Chrome 最新版离线安装包下载地址 v123.0.6312.123 - 每日自动更新 | 异次元软件 文件名称:123.0.6312.123_chrome_installer.exe。 123.0.6312.123_chrome_installer.exe 文件右键解压缩得到 chrome.7z&#x…

树莓派3B长时间不操作屏幕息屏无信号处理

树莓派外接显示器,需长时间展示某个网页,经过一段时间,显示器屏幕会黑掉显示无信号。 需修改 /etc/lightdm/lightdm.conf 配置文件中新增如下两行并重启。 xserver-commandX -s 0 dpms sleep-inactive-timeout0

软考 - 系统架构设计师 - Web 应用真题(2)

问题 1: 淘汰策略:遗留系统技术含量低,业务价值也低,所以需要全面重新开发一个系统来替代遗留系;(一般是企业的业务发生了根本变化,遗留系统已经基本不再适应企业运作的需要;或者是遗…

nextjs渲染篇

1 服务器组件 默认情况下,Next.js 使用服务器组件。 1.1 服务器组件是如何呈现的? 在服务器上,Next.js 使用 React 的 API 来编排渲染。渲染工作被拆分为多个块:按单个路段和Suspense 每个区块分两个步骤呈现: Re…

SQLite的PRAGMA 声明(二十三)

返回:SQLite—系列文章目录 上一篇:SQLite从出生到现在(发布历史记录)(二十二) 下一篇:用于 SQLite 的异步 I/O 模块(二十四) PRAGMA 语句是特定于 SQLite 的 SQL 扩…

Valorant 瓦罗兰特更新后进不去游戏?3个解决方法完美解决

Valorant 瓦罗兰特更新后进不去游戏?3个解决方法完美解决 《无畏契约(VALORANT)》是一款由知名游戏开发商(Riot Games)开发并且免费的多人射击游戏。游戏背景设定在一个幻想世界中,玩家将探索瓦罗兰大陆上…

基于python的二手房数据分析建模及可视化研究,爬取链家二手房数据,可视化分析,房价预测模型

介绍 主要涉及通过爬取济南市链家二手房数据,然后对数据进行处理,包括缺省值处理,高德地图获取二手房地址所属市区,经纬度等数据处理。然后通过python的flask框架编写后端接口,把数据响应给前端。然后前端通过AJAX请求…

谈谈微前端

相关问题 为什么要用微前端微前端的优缺点 回答关键点 独立开发 独立运行 独立部署 自治 微前端是一种架构理念,它将较大的前端应用拆分为若干个可以独立交付的前端应用。这样的好处是每个应用大小及复杂度相对可控。在合理拆分应用的前提下,微前端能…

【Java基础学习】面向对象编程

开始时间: April 10, 2024 结束时间: April 16, 2024 阶段: Done 基础部分 类与对象的关系 类是抽象的,概念的,代表一类事物对象是具体的,实际的,代表一个具体事物(实例)类是对象的模板,对象…

Python 数学应用(四)

原文:zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者:飞龙 协议:CC BY-NC-SA 4.0 第十一章:其他主题 在本章中,我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…

记录-海思开发板的 嵌入式nginx和 php的移植(交叉编译环境配置)

嵌入式 lnmp搭建的记录 N:NginxP:php编译PHP可能遇到的问题configure阶段:Makefile-make阶段:Makefile-make install阶段: 文章比较水,并没有没解决什么实际问题,有点不好意思发布。但好像又记录…

Python 数据结构和算法实用指南(三)

原文:zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者:飞龙 协议:CC BY-NC-SA 4.0 第七章:哈希和符号表 我们之前已经看过数组和列表,其中项目按顺序存储并通过索引号访问。索引号对计算机来说很有效…

安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd

安装 k8s集群的问题:默认容器运行时从 Docker 改为 Containerd 1、背景2、容器运行时从 Docker 改为 Containerd2.1、安装 Containerd:2.2、生成 Containerd 的配置文件2.3 、创建 /etc/crictl.yaml 文件2.4 、配置 Containerd 服务开机自启 &#x1f49…

安全认证Kerberos详解

文章目录 一、Kerberos入门与使用1、Kerberos概述1.1 什么是Kerberos1.2 Kerberos术语1.3 Kerberos认证原理 2、Kerberos安装2.1 安装Kerberos相关服务2.2 修改配置文件2.3 其他配置与启动 3、Kerberos使用概述3.1 Kerberos数据库操作3.2 Kerberos认证操作 二、Hadoop Kerberos…

海外仓管理系统的“实用性”讨论:没办法自由设置信息的,都是伪功能

和很多经营海外仓的企业都聊过这样一个问题:对于海外仓的管理系统,到底什么样的设计,什么样的功能才是真的有价值的。 那这就不得不说到一个概念:自由性。什么意思呢,海外仓看似都一样,大家都在经营仓储、…