Java Web入门之Ajax的用法详解(附代码和实战)

2023-11-09

创作不易 觉得有帮助或需要源码可以点赞关注收藏后评论区留言


前言

Ajax是一个客户端技术 是更加先进 标准化和高效的Web开发技术


提示:以下是本篇文章正文内容,下面案例可供参考

一、Ajax与传统的Web应用模式的对比

在传统的Web应用中 页面中用于的每一次操作都将触发一次返回Web服务器的HTTP请求 服务器将进行相应的处理然后返回一个HTML页面给客户端

而在Ajax应用中 页面中用户的操作将通过Ajax引擎与服务器端进行通信 然后将返回结果提交给客户端页面的Ajax引擎 再由Ajax引擎来决定将这些数据插入到页面的指定位置

所以在Ajax开发模式中可以通过JavaScript实现在不刷新整个页面的情况下 对部分数据进行更新 从而降低了网络流浪 给用户带来更好的体验

二、Ajax使用的技术

Ajax是XMLHttpRequest对象和JavaScript XML CSS DOM等多种技术的组合  其中只有XMLHttpRequest对象是新技术 其他的均为已有技术 

1:XMLHttpRequest对象

是核心技术 它是一个具有应用程序接口的JavaScript对象 能够使用超文本传输协议连接一个服务器 是微软公司为了满足开发者的需要推出的

2:XML

它是可扩展的标记语言的缩写 它提供了用于描述结构化数据的格式 适用于不同应用程序间的数据交换 而且这种交换不以预先定义的一组数据结构为前提 增强了可扩展性 XMLHttpRequest对象与服务器交换的数据通常采用XML格式

在XML文档中 元素以树形分层结构排列 其实<resume>为根元素 其他的都是该元素的子元素

3:JavaScript

它是一种在Web页面中添加动态脚本代码的解释性程序语言 具体介绍可以参考我这篇博客

JavaScript

4:CSS 样式表

5:DOM 文档对象模型

三:XMLHttpRequest对象的具体使用

1:初始化XMLHttpRequest对象

IE浏览器初始化如下

var http_request=new ActiveXObject("Msxml2.XMLHTTP");

或者

var http_request=new ActiveObject("Microsoft.XMLHTTP");

 非IE浏览器

var http_request=new XMLHttpRequest();

两种情况的实例化代码如下

if(window.XMLHttpRequest){
http_request=new XMLHttpRequest();
}
else if(window.ActiveObject){
try{
http_request=new ActiveXObject("Msxml2.XMLHTTP");
}
cathc(e){
try{
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}

 2:XMLHttpRequest对象常用方法

open()方法 用于设置进行异步请求目标的URL 请求方法以及其他参数信息

open("method","URL"[,asyncFlag[,"userName"[,"password"]]])

 send()方法 用于向服务器发送请求 如果请求声明为异步  该方法将立即返回 否则要等到接受到响应为止

send(content)

setRquestHeader()方法用于为请求的HTTP头设置值 

setRequestHeader("header","value")

3:XMLHttpRequest常用属性

onreadystatechange属性用于指定状态改变时所触发的事件处理器 在Ajax中 每个状态改变都会触发一个事件处理器 通常会调用一个JavaScript函数 

http_request.onreadystatechange=getResult;

 

 readystate属性用于获取请求的状态 包括五个属性值 0代表未初始化 1代表正在加载 2代表已加载 3代表交互中 4代表完成

status属性用于返回服务器的HTTP状态码 200表示请求成功 202表示请求被接受 400表示错误的请求 404表示文件未找到 500表示内部服务器错误 

 四:与服务器通信--发送请求与处理响应

发送get和post请求都要经过以下四个步骤

1:初始化XMLHttpRequest对象 为了提高程序的兼容性 需要创建一个跨浏览器的XMLHtppRequest对象 并且判断是否成功

if(window.XMLHttpRequest){
http_request=new XMLHttpRequest();
}
else if(window.ActiveObject){
try{
http_request=new ActiveXObject("Msxml2.XMLHTTP");
}
cathc(e){
try{
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){}
}
}

2:为XMLHttpRequest对象指定一个返回结果处理函数 用于对返回结果进行处理

3:创建一个与服务器的连接 在创建时 需要指定发送请求的方式以及设置是否采用异步方法发送请求

4:向服务器发送请求 XMLHttpRequest对象的send方法可以向服务器发送请求 该方法需要传递一个参数 如果发送的时GET请求 则参数可以设置为NULL POST请求则要指定参数 

处理服务器响应

XMLHttpRequest对象提供了两个用来访问服务器响应的属性 一个时responseText属性 返回字符串响应 另一个时responseXML属性 返回XML响应

1:处理字符串响应 

通常应用在响应不是特别复杂的情况下 

2:处理XML响应

如果在服务器端需要生成特别复杂的响应 那么就需要应用XML响应 应用XMLHttpRequest对象的responseXML属性 可以生成一个XML文档

解决中文乱码问题

1:当接收使用GET方法提交的数据时 要将编码转换为GBK或者UTF-8

String seIProvince=request.getParameter("parProvince");
seIProvince=new String(seIProvince.getBytes("ISO-8859-1"),("UTF-8");

2:应用POST方法提交数据时

String username=request.getParameter("user");
username=new String(username.getBytes("ISO-8859-1"),("UTF-8");

 五:Ajax重构

Ajax的实现主要依赖于XMLHttpRequest对象 如果在调用其进行异步数据传输时 由于XMLHttpRequest对象的实例在处理事件完成后就会被销毁 所以如果不对该对象进行封装处理,在下次需要调用它的时猴就要重新构建,浪费资源并且浪费事件,不过JavaScript脚本语言支持OO编码风格,通过它将Ajax所必需的功能封装在对象中 分为以下三步

1:创建一个单独的JS文件 命名为AjaxRequest.js 并且在该文件中编写重构Ajax所需要的代码 

具体代码可以点赞关注收藏后评论区留言要

2:在需要应用Ajax的页面应用以下语句

<script language="javascript" src="AjaxRequest.js"></script>

3:在应用Ajax的页面中编写错误处理的方法 实例化Ajax对象的方法和回调函数 

<script language="javascript">
 function onerror(){
alert("您的操作有错误");
}
function getInfo(){
var loader=new net.AjaxRequest("getInfo.jsp?nocache="+new Date().getTime(),deal_getInfo,onerror,"GET");
}
function deal_getInfo(){
document.getElementById("showInfo").innerHTML=this.req.responseText;
}
</script>

 有两个实例分别是级联下拉列表的创建和显示进度条 代码过多此处不展示

有想要的朋友点赞关注收藏后评论区留言即可


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Web入门之Ajax的用法详解(附代码和实战) 的相关文章

随机推荐

  • redhat 文件服务器,几个重要的RedHat Linux内核文件详细介绍

    在网络中 不少服务器采用的是Linux系统 为了进一步提高服务器的性能 可能需要根据特定的硬件及需求重新编译Linux内核 编译Linux内核 需要根据规定的步骤进行 编译内核过程中涉及到几个重要的文件 比如对于RedHat Linux 在
  • Handler与异步消息处理

    Handler 在 Android 中的应用很广泛 基本上每个 android 开发人员都会使用到它 本篇文章将会介绍 Handler 和异步消息机制相关的使用方法 下一篇会从源码的角度分析 Android 中异步消息处理的流程 Andro
  • javascript/nodejs 中获取当前时间

    javascript nodejs 中获取当前时间 昨天 今天 明天 我们在开发中 经常要获取的今天 昨天 和明天的日期 下列有个记录能够获得今天 昨天 明天的日期 并且格式化输出 首先我们需要扩展Date对象的Format函数 1 2 3
  • LTE上行RS的SINR

    每个UE的上行SRS都放置在一个子帧的最后一个块中 SRS的频域间隔为两个等效子载波 所以一个UE的SRS的干扰只来自于其他UE的SRS SINR SRS接收功率 干扰功率 噪声功率 SRS接收功率 SRS发射功率 链路损耗 干扰功率 邻小
  • LeetCode 942. 增减字符串匹配

    由范围 0 n 内所有整数组成的 n 1 个整数的排列序列可以表示为长度为 n 的字符串 s 其中 如果 perm i lt perm i 1 那么 s i I 如果 perm i gt perm i 1 那么 s i D 给定一个字符串
  • 面试官:为什么data属性是一个函数而不是一个对象?

    一 实例和组件定义data的区别 vue实例的时候定义data属性既可以是一个对象 也可以是一个函数 const app new Vue el app 对象格式 data foo foo 函数格式 data return foo foo 组
  • 标签显示不出图片——图片路径问题

    引言 大家在进行开发的过程中 经常会有显示图片这个需求 但是却经常因为种种问题显示不了 接下来 我将详细叙述这个问题 希望对大家有所帮助 图片显示不出 一般有三个问题 一 图片所在路径错误 1 使用绝对路径 解决方法 右键查看图片的详细属性
  • js localStorage

    localStorage是H5提供的永久存储空间 一般最大可存储5M数据 并且支持跨域隔离 他的出现极大提高了前端开发的可能性 localStorage的使用很多人都知道setItem getItem removeItem 但他也可以直接以
  • 放弃apollo到自己研发,全局码表系统。

    背景 码表都见过 每个系统都有自己的码表 每个用户 2B 都有自己码表 这里不是说每个客户端自定义 apollo是配置中心 这和码表的功能不一样 码表更侧重数据库用int类型代替varchar类型 以节约存储空间 之前码表的使用 在后端用子
  • RKD知识蒸馏实战:使用CoatNet蒸馏ResNet

    文章目录 摘要 最终结论 数据准备 教师网络 步骤 导入需要的库 定义训练和验证函数 定义全局参数 图像预处理与增强 读取数据 设置模型和Loss 学生网络 步骤 导入需要的库 定义训练和验证函数 定义全局参数 图像预处理与增强 读取数据
  • 高防cdn和高防服务器有什么不一样?

    高防cdn 相信很多看过我们文章的小伙伴对cdn已经很了解了 cdn的原理很简单 就是构建在网络上的很多个节点 为网站作内容 分发 使用户就近获取所需资源 且分配的cdn节点都是高防节点 每个节点都有防御功能 还可以帮助用户隐藏真实ip 高
  • 记mac虚拟机parallels安装银河麒麟V10系统步骤及问题

    1 银河麒麟官网下载系统 银河麒麟操作系统 麒麟操作系统 中标麒麟 麒麟软件官方网站 选择桌面操作系统V10并申请试用 下载桌面操作系统AMD64版 2 parallels安装麒麟系统 1 新建 选择 安装windows或其他操作系统 没找
  • Eclipse导入项目左下角有感叹号/红叉

    Eclipse导入项目左下角有感叹号 红叉 左下角的红色感叹号 导致原因 解决办法 项目左下角红叉 导致原因 解决办法 END 左下角的红色感叹号 导致原因 build path 出现问题 里面有缺失或者无法找到的包 显示红色感叹号是因为j
  • 写一个python接口自动化测试框架

    安装依赖库 在开始编写Python接口自动化测试框架之前 需要安装一些必要的依赖库 您可以使用pip命令安装 pip install requests pip install pytest pip install pytest html p
  • (C++)逻辑运算符——与(&&)、或(

    1 逻辑或 OR 运算符 当两个条件中有一个或全部满足某个要求时 则表达式的值为真 条件 一个真或全为真 结果 则为真 备注 如果最左侧的表达式为真时 将不会判断下一个表达式 提高电脑运行效率 2 逻辑与 AND 运算符 当两个条件为真时
  • 邮件附件名乱码问题

    1 在创建邮件前添加 System setProperty mail mime splitlongparameters false 2 在创建MimeMessageHelper对象时添加 MimeMessageHelper messageH
  • 如何录制gif动态图片并在CSDN中插入动态图片

    我们在网上浏览别人的博客时 经常可以看到以gif动态图显示的程序效果演示和代码段 那么如何录制gif动态图片并在CSDN中插入动态图片呢 下面介绍一种简单的方法 了解之后 你也可以将其应用在自己的博客中 以动态图的方式展示程序运行结果 当我
  • redis集群架构详解

    一 集群架构搭建 1 配置 在一台机器上模拟多台机器搭建redis集群 一个集群代表一台物理机 集群1路径 usr local redis redis cluster cluster1 9001 redis conf usr local r
  • C# IQR算法检测异常点

    话不多说 上马 public List
  • Java Web入门之Ajax的用法详解(附代码和实战)

    创作不易 觉得有帮助或需要源码可以点赞关注收藏后评论区留言 文章目录 前言 一 Ajax与传统的Web应用模式的对比 二 Ajax使用的技术 三 XMLHttpRequest对象的具体使用 四 与服务器通信 发送请求与处理响应 五 Ajax