【Java Web】Ajax 介绍及 jQuery 实现

embedded/2024/11/20 11:29:14/

文章目录

    • AJAX介绍
    • XMLHttpRequest
    • jQuery实现Ajax
      • $.ajax()
      • $().load()
      • $.get()
      • $.post()

AJAX介绍

AJAX(Asynchronous JavaScript and XML)是一种创建高效、动态网页应用的网页开发技术。它允许在不重新加载整个页面的情况下进行异步数据更新和交互,从而提供更流畅的用户体验。尽管名字中包含了XML,但实际上,AJAX可以使用任何格式的数据,包括JSON、HTML等。

AJAX的工作原理

  1. 客户端请求:用户在网页上执行某些操作(如点击按钮),触发JavaScript代码发送一个异步请求到服务器。
  2. 服务器处理:服务器接收请求后,处理这些请求,并返回响应给客户端。
  3. 客户端处理:客户端通过JavaScript接收到服务器的响应,并根据需要更新页面的一部分,而不需要刷新整个页面。

在这里插入图片描述

AJAX与传统Web的主要区别

方式及比较项传统WebAjax技术
发送请求方式浏览器发送同步请求异步引擎对象发送请求
服务器响应响应内容是一个完整页面响应内容只是需要的数据
客户端处理方式需等待服务器响应完成并重新加载整个页面后用户才能进行操作可以动态更新页面中的部分内容
不影响用户在页面进行其他操作

XMLHttpRequest

XMLHttpRequest (XHR) 是一个内置在浏览器中的API,是实现AJAX功能的核心技术之一。用于在客户端和服务器之间异步交换数据。

主要方法和属性

open():初始化一个新的请求。这个方法接受三个参数:请求的方法(GET、POST等)、请求的URL以及是否异步执行该请求。

xhr.open('GET', 'https://example.com/data', true);

send():发送请求。对于POST请求,可以在 send() 方法中传递请求体数据。

xhr.send(data);

setRequestHeader():设置HTTP请求头。这对于发送带有特定头部信息的请求非常有用。

xhr.setRequestHeader('Content-Type', 'application/json');

onreadystatechange:当 readyState 属性改变时调用的事件处理器。

readyState 的值有五个:

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪

statusstatusText:分别表示HTTP状态码和状态消息,如 200 OK404 Not Found 等。

responseType:指定响应的数据类型,如 'text', 'json', 'document', 'arraybuffer''blob'

responseresponseText:分别用于获取响应数据。response 是根据 responseType 设置的响应类型,而 responseText 总是返回字符串形式的响应。responseXML 将XML格式的响应内容解析成DOM对象。

jQuery实现Ajax

请求方法描述适用场景
$.ajax()通用的 AJAX 方法,可以处理各种类型的 HTTP 请求功能最全但也最复杂
$().load()用于将外部 HTML 文件的内容加载到当前页面指定元素的方法使用简单,功能有限
$.get()专门用于处理 GET 请求使用简单,功能有限
$.post()专门用于处理 POST 请求适用于动态加载页面内容

ajax_76">$.ajax()

通过 HTTP 请求加载远程数据

语法:jQuery.ajax([settings])

  • settings:可选。用于配置 Ajax 请求的键值对集合
java">$("#b01").click(function(){htmlobj = $.ajax({url:"/jquery/test1.txt",async:false});$("#myDiv").html(htmlobj.responseText);
});

参数

参数类型描述
optionsObiect可选,AJAX 请求设置,所有选项都是可选的
asyncBoolean默认值异步请求 true 同步请求为 false
cacheBoolean默认值 true dataType 为 script 和 jsonp 时默认不缓存此页面 false
dataString发送到服务器的数据
dataTypeString预期服务器返回的数据类型
errorFunction请求失败时调用此函数
successFunction请求成功后的回调函数
jsonpString在一个 jsonp 请求中重写回调函数的名字
jsonpCallbackString为 jsonp 请求指定一个回调函数名

常见配置选项

java">$.ajax({url: '请求的URL',type: '请求类型(如GET、POST等)',data: '要发送的数据(如果是GET请求,通常将数据附加到URL中)',contentType: '发送数据的内容类型(默认为"application/x-www-form-urlencoded; charset=UTF-8")',dataType: '预期服务器返回的数据类型(如html、json、xml、script、text等)',success: function(data, textStatus, jqXHR) {// 请求成功时执行的函数},error: function(jqXHR, textStatus, errorThrown) {// 请求失败时执行的函数},complete: function(jqXHR, textStatus) {// 请求完成后执行的函数,无论成功还是失败},beforeSend: function(jqXHR, settings) {// 在请求发送之前执行的函数},async: true, // 默认情况下为异步请求,设置为false则变为同步请求cache: true, // 默认情况下GET请求会被缓存timeout: 0, // 请求超时时间(毫秒),默认为0(无超时)global: true, // 触发全局AJAX事件processData: true, // 默认情况下会尝试处理发送的数据为查询字符串traditional: false, // 用于序列化数组的参数
});

$().load()

从服务器加载数据,并把返回的数据放入被选元素中

语法:$(selector).load(URL [, data] [, callback]);

  • selector:一个 CSS 选择器字符串,用于匹配 DOM 元素。
  • URL:一个字符串,指定要加载的 HTML 文件的 URL。
  • data:可选参数,一个对象,包含要发送到服务器的数据,这些数据会以 POST 方式发送。
  • callback:可选参数,一个函数,当请求完成时调用(在文档片段被插入到 DOM 中之后)。
【data.html】
<p>Hello from data.html</p>
<div id="content"></div>
<script>javascript">$(document).ready(function() {$('#content').load('data.html', function(response, status, xhr) {if (status == 'success') {console.log('加载成功');} else if (status == 'error') {console.error('加载失败: ' + xhr.status + ' ' + xhr.statusText);} else if (status == 'complete') {console.log('加载完成');}});});
</script>

#content 元素将会被填充 data.html 文件的内容。

$.get()

通过 HTTP GET 请求从服务器上请求数据

语法:$.get(url, [data], [callback], [dataType]);

  • url:必需,一个字符串,表示请求的 URL。

  • data:可选,一个对象或字符串,表示要发送到服务器的数据。

  • callback:可选,一个函数,当请求成功时执行。此函数接受三个参数:

    data:服务器返回的数据。

    statusText:HTTP 状态文本,如 “success” 或 “error”。

    jqXHR:jQuery 的 XMLHttpRequest 对象。

  • dataType:可选,预期服务器返回的数据类型,如 “xml”, “html”, “script”, “json”, “text”, “jsonp” 等。

java">// 带数据的 GET 请求
$.get('https://api.example.com/data', { key: 'value' }, function(data, status) {console.log('请求成功,状态:' + status);console.log('返回的数据:', data);
});
java">// 错误处理
$.get('https://api.example.com/data', function(data, status, jqXHR) {if (status === 'success') {console.log('请求成功,返回的数据:', data);} else if (status === 'error') {console.error('请求失败,状态码:' + jqXHR.status);}
});

$.post()

通过 HTTP POST 请求从服务器上请求数据

语法:$.post(url, [data], [callback], [dataType]);

参数同上

java">// 简单的 POST 请求
$.post('https://api.example.com/data', { key: 'value' }, function(data, status) {console.log('请求成功,状态:' + status);console.log('返回的数据:', data);
});
java">// 指定数据类型
$.post('https://api.example.com/data', { key: 'value' }, function(data) {console.log('请求成功,返回的数据:', data);
}, 'json');
java">// 错误处理
$.post('https://api.example.com/data', {key:'value'}, function(data,status,jqXHR) {if (status === 'success') {console.log('请求成功,返回的数据:', data);} else if (status === 'error') {console.error('请求失败,状态码:' + jqXHR.status);}
});

除上述基本用法外,$.post() 还可以接受一个配置对象,类似于 $.ajax() 方法的选项

java">$.post({url: 'https://api.example.com/data',data: { key: 'value' },success: function(data, status, jqXHR) {console.log('请求成功,状态:' + status);console.log('返回的数据:', data);},error: function(jqXHR, textStatus, errorThrown) {console.error('请求失败,状态码:' + jqXHR.status);console.error('错误信息:' + errorThrown);},complete: function(jqXHR, textStatus) {console.log('请求完成,状态:' + textStatus);},dataType: 'json',async: true, // 默认为 true,表示异步请求cache: false, // 默认情况下,POST 请求不会被缓存timeout: 3000 // 请求超时时间(毫秒)
});
  • $.post(URL,data,success,“json”);
  • $.getJSON(URL,data,success)
  • $.get(URL,data,success,“json”)

http://www.ppmy.cn/embedded/139062.html

相关文章

torch.utils.data.dataset 的数据组织形式——python list、dict、tuple内存消耗量

在Pytorch中&#xff0c;我们需要通过torch.utils.data.dataset来实现数据的读取。torch.utils.data.dataset是一种非流式的数据读取策略&#xff0c;需要将数据一次性导入至内存中.如果数据规模过大&#xff0c;可能存在内存不够的问题。 import torch from torch.utils.data…

Spark使用过程中的 15 个常见问题、详细解决方案

目录 问题 1&#xff1a;Spark 作业超时问题描述解决方案Python 实现 问题 2&#xff1a;内存溢出问题描述解决方案Python 实现 问题 3&#xff1a;Shuffle 性能问题问题描述解决方案Python 实现 问题 4&#xff1a;Spark 作业调度不均问题描述解决方案Python 实现 问题 5&…

美创科技膺选CNVD技术组支撑单位!

国家信息安全漏洞共享平台&#xff08;CNVD&#xff09;发布安全公告&#xff08;编号&#xff1a;CNTA-2024-0019&#xff09;&#xff0c;宣布新增八家支撑单位。美创科技凭借数据安全领域的技术实力和专业服务能力&#xff0c;顺利通过支撑能力候选考察&#xff0c;首次获得…

SQL 语句优化及编程方法

DBMS生成的执行计划在很大程度上要受到代码外部结构的影响。因此要想优化查询性能&#xff0c;就必须要知道如何写代码才能使优化器的执行效率更高。 但是&#xff0c;不能为了“效率”牺牲代码的可读性&#xff0c;要让代码清晰。 1 查询优化 在解决SQL造成的性能问题时&am…

Redis面试篇笔记(持续更新)

一、redis主从集群 单节点redis的并发能力是由上限的&#xff0c;要进一步提高redis的并发能力可以搭建主从集群&#xff0c;实现读写分离&#xff0c;一主多从&#xff0c;主节点写数据&#xff0c;从节点读数据 部署redis主从节点的docker-compose文件命令解析 version: &q…

基于单片机的厂房防火报警系统

本设计基于单片机的厂房防火报警系统&#xff0c;选用STC89C52RC作为核心的控制芯片&#xff0c;并且使用GSM技术来控制各种传感器&#xff0c;来实现多功能、多方面的安全监测。其中传感器主要包括&#xff1a;烟雾传感器、火焰传感器和温度传感器。主控芯片与这些传感器&…

【软件工程】一篇入门UML建模图(类图)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

【PGCCC】PostgreSQL 数据库设计中的文本标识符 | 翻译

无论是设计独立应用程序还是微服务&#xff0c;您都不可避免地会遇到共享标识符的话题。无论是网页的 URL、RESTful API 资源、JSON 文档、CSV 导出还是其他内容&#xff0c;特定资源的标识符都会被暴露。 /orders/123 /products/345/variants/1虽然标识符只是一个数字&#x…