【Java Web】Ajax 介绍及 jQuery 实现

文章目录

    • 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()

通过 HTTP 请求加载远程数据

语法:jQuery.ajax([settings])

  • settings:可选。用于配置 Ajax 请求的键值对集合
$("#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 请求指定一个回调函数名

常见配置选项

$.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>$(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” 等。

// 带数据的 GET 请求
$.get('https://api.example.com/data', { key: 'value' }, function(data, status) {console.log('请求成功,状态:' + status);console.log('返回的数据:', data);
});
// 错误处理
$.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]);

参数同上

// 简单的 POST 请求
$.post('https://api.example.com/data', { key: 'value' }, function(data, status) {console.log('请求成功,状态:' + status);console.log('返回的数据:', data);
});
// 指定数据类型
$.post('https://api.example.com/data', { key: 'value' }, function(data) {console.log('请求成功,返回的数据:', data);
}, 'json');
// 错误处理
$.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() 方法的选项

$.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.rhkb.cn/news/471886.html

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

相关文章

【C++】—— map 与 set 深入浅出:设计原理与应用对比

不要只因一次失败&#xff0c;就放弃你原来决心想达到的目的。 —— 莎士比亚 目录 1、序列式容器与关联式容器的概述与比较 2、set 与 multiset 2.1 性质分析&#xff1a;唯一性与多重性的差异 2.2 接口解析&#xff1a;功能与操作的全面解读 3、map 与 multimap 3.1 性…

Git回到某个分支的某次提交

1.切换到需要操作的分支&#xff08;<branch-name>是分支名称&#xff09;。 命令如下&#xff1a; git checkout <branch-name> 2.获取代码的提交记录 。命令如下&#xff1a; git log 按q退出当前命令对话。 获取到某次提交或者合并的hash值&#xff08;下文…

《TCP/IP网络编程》学习笔记 | Chapter 10:多进程服务器端

《TCP/IP网络编程》学习笔记 | Chapter 10&#xff1a;多进程服务器端 《TCP/IP网络编程》学习笔记 | Chapter 10&#xff1a;多进程服务器端进程概念及应用并发服务端的实现方法理解进程进程ID通过调用 fork 函数创建进程 进程和僵尸进程僵尸进程产生僵尸进程的原因销毁僵尸进…

【服务器】本地安装X11 服务器-Windows

【服务器】本地安装X11 服务器-Windows X11 服务器概述X Window System 简介 本地安装X11 服务器另&#xff1a;采用 MobaXterm (自带 X server) 连接远程服务器简单说明流程&#xff1a; 参考 X11 服务器概述 X11 服务器 是 X Window System&#xff08;简称 X11 或 X&#x…

Unity中HDRP设置抗锯齿

一、以前抗锯齿的设置方式 【Edit】——>【Project Settings】——>【Quality】——>【Anti-aliasing】 二、HDRP项目中抗锯齿的设置方式 在Hierarchy中——>找到Camera对象——>在Inspector面板上——>【Camera组件】——>【Rendering】——>【Pos…

使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本

作者&#xff1a;来自 Elastic Jonathan Simon 收集数据对于可观察性和安全性至关重要&#xff0c;而确保数据能够快速搜索且获得低延迟结果对于有效管理和保护应用程序和基础设施至关重要。但是&#xff0c;存储所有这些数据会产生持续的存储成本&#xff0c;这为节省成本创造…

基于ssh得网上预约挂号系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【SpringBoot】20 同步调用、异步调用、异步回调

Git仓库 https://gitee.com/Lin_DH/system 介绍 同步调用&#xff1a;指程序在执行时&#xff0c;调用方需要等待函数调用返回结果后&#xff0c;才能继续执行下一步操作&#xff0c;是一种阻塞式调用。 异步调用&#xff1a;指程序在执行时&#xff0c;调用方在调用函数后立…

Leecode刷题C语言之统计好节点的数目

执行结果:通过 执行用时和内存消耗如下&#xff1a; 题目&#xff1a;统计好节点的数目 现有一棵 无向 树&#xff0c;树中包含 n 个节点&#xff0c;按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一个长度为 n - 1 的二维整数数组 edges&#xff0c;其中 edges[i] [ai,…

Cellebrite VS IOS18Rebooting

Cellebrite VS IOS18Rebooting我们想分享一些有关 iOS 18 重启“功能”的信息。在过去一周左右的时间里&#xff0c;人们对 iOS 18 中一项新的未记录功能产生了极大关注&#xff0c;该功能会导致设备在一段时间不活动后重新启动。 这意味着&#xff0c;如果设备在一定时间不活…

mysql每日一题(上升的温度,date数据的计算)

日期之间的运算 日期类型的加法运算 data_add(now_data,interval 1 month) select date_add(now(), interval 1 day); -- 加1天 select date_add(now(), interval 1 hour); -- 加1小时 select date_add(now(), interval 1 minute); -- 加1分钟 select date_add(now(), inter…

windows NGIMX配置WebSocket反向代理

linux下 据说nginx是要有 stream的模块 Linux安装Nginx步骤之后续&#xff0c;带stream模块-CSDN博客 Nginx从1.3.13版本就开始支持WebSocket linux 下参考如下链接 配置 Nginx 反向代理 WebSocket - 哈喽哈喽111111 - 博客园 (cnblogs.com) SSL的配置参考 【Linux】采用…

蓝桥杯竞赛单片机组备赛【经验帖】

本人获奖情况说明 笔者本人曾参加过两次蓝桥杯电子赛&#xff0c;在第十二届蓝桥杯大赛单片机设计与开发组获得省级一等奖和国家级二等奖&#xff0c;在第十五届嵌入式设计开发组获得省级二等奖。如果跟着本帖的流程备赛&#xff0c;只要认真勤奋&#xff0c;拿个省二绝对没问…

《鸿蒙生态:开发者的机遇与挑战》

一、引言 在当今科技飞速发展的时代&#xff0c;操作系统作为连接硬件与软件的核心枢纽&#xff0c;其重要性不言而喻。鸿蒙系统的出现&#xff0c;为开发者带来了新的机遇与挑战。本文将从开发者的角度出发&#xff0c;阐述对鸿蒙生态的认知和了解&#xff0c;分析鸿蒙生态的…

入侵检测算法平台部署LiteAIServer视频智能分析平台行人入侵检测算法:科技守护安全的新篇章

在现代化城市快速发展的背景下&#xff0c;安全防范已成为城市管理与社会生活中不可或缺的一环。随着人工智能、大数据、物联网等技术的飞速发展&#xff0c;智能化安防系统正逐步改变着传统的安全防护模式&#xff0c;特别是在行人入侵检测领域&#xff0c;视频智能分析平台Li…

【Linux】Linux 权限的理解

首先我们先介绍Linux中基本的用户认识&#xff1a; Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;和普通用户 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制普通用户&#xff1a;在linux下做有限(权限较低)的事情。超级用户的…

给阿里云OSS绑定域名并启用SSL

为什么要这么做&#xff1f; 问题描述&#xff1a; 当用户通过 OSS 域名访问文件时&#xff0c;OSS 会在响应头中增加 Content-Disposition: attachment 和 x-oss-force-download: true&#xff0c;导致文件被强制下载而不是预览。这个问题特别影响在 2022/10/09 之后新开通 OS…

spring boot整合https协议

整体目录 1. 生成SSL证书 首先&#xff0c;使用keytool生成一个自签名证书。打开命令行工具并运行以下命令&#xff1a; keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件&#xf…

【Window主机访问Ubuntu从机——Xrdp配置与使用】

使用Xrdp在Window环境下远程桌面访问Ubuntu主机 文章目录 Ubuntu安装图形化界面Ubuntu安装Xrdp通过网线连接两台主机Window主机有线连接配置Ubuntu从机设置测试有线连接 Window主机打开远程桌面功能参考文章总结 Ubuntu安装图形化界面 sudo apt update sudo apt upgrade sudo …

游戏引擎学习第10天

视频参考:https://www.bilibili.com/video/BV1LyU3YpEam/ 介绍intel architecture reference manual 地址:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html RDTS&#xff08;读取时间戳计数器&#xff09;指令是 x86/x86_64 架构中的…