当前位置: 首页 > news >正文

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`

在这里插入图片描述

嗨,亲爱的读者们!欢迎来到这篇关于使用 jQuery 中的 ajax() 方法进行 Ajax 请求的博客。在前端开发中,jQuery 提供了简便而强大的工具,其中 ajax() 方法为我们处理异步请求提供了便捷的解决方案。无需手动创建 XMLHttpRequest 对象,只需几行代码,就能完成数据的发送和接收。在这篇文章中,我们将深入探讨 ajax() 方法的使用,同时为你呈现丰富的实例。

什么是 Ajax?

在开始讲解 jQuery 的 ajax() 方法之前,让我们先回顾一下 Ajax 的基础知识。Ajax,即 Asynchronous JavaScript and XML,是一种用于创建异步请求的技术。通过 Ajax,我们能够在不刷新整个页面的情况下,与服务器进行数据交互,从而提高用户体验。

jQuery 的 ajax() 方法

jQuery 的 ajax() 方法是一个多功能、强大的工具,用于发起 Ajax 请求。它具有简单易用的接口,允许我们在不同的场景中进行各种异步操作。接下来,让我们通过一系列实例,深入了解这个方法的各种用法。

基本用法

首先,我们来看一个最基本的例子。假设我们要向服务器请求一段文本数据:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>jQuery ajax() 方法基本用法</title><!-- 引入 jQuery 库 --><script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body><button id="getDataButton">获取数据</button><div id="dataContainer"></div><script>// 等待文档加载完成$(document).ready(function () {// 监听按钮点击事件$("#getDataButton").click(function () {// 使用 ajax() 方法发起 GET 请求$.ajax({url: "https://jsonplaceholder.typicode.com/posts/1",method: "GET",success: function (data) {// 请求成功时的处理$("#dataContainer").text(data.title);},error: function (xhr, status, error) {// 请求失败时的处理console.error("请求失败:", status, error);}});});});</script>
</body>
</html>

在这个例子中,我们引入了 jQuery 库,并使用 ajax() 方法发起了一个 GET 请求。当按钮被点击时,请求会发送到指定的 URL,成功时将返回的数据显示在页面上。

发送 POST 请求

ajax() 方法不仅支持 GET 请求,还可以发送其他类型的请求,比如 POST。下面是一个发送 POST 请求的例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>jQuery ajax() 方法发送 POST 请求</title><!-- 引入 jQuery 库 --><script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body><button id="sendDataButton">发送数据</button><script>// 等待文档加载完成$(document).ready(function () {// 监听按钮点击事件$("#sendDataButton").click(function () {// 构建要发送的数据对象var dataToSend = {title: "foo",body: "bar",userId: 1};// 使用 ajax() 方法发起 POST 请求$.ajax({url: "https://jsonplaceholder.typicode.com/posts",method: "POST",data: JSON.stringify(dataToSend),contentType: "application/json", // 设置请求头success: function () {// 请求成功时的处理console.log("数据发送成功!");},error: function (xhr, status, error) {// 请求失败时的处理console.error("数据发送失败:", status, error);}});});});</script>
</body>
</html>

在这个例子中,我们定义了一个 JavaScript 对象 dataToSend,并使用 ajax() 方法发送了一个 POST 请求。我们通过 data 选项将数据对象转换为 JSON 字符串,并设置了 contentType"application/json",确保服务器正确解析请求体。

处理 JSONP 请求

有时候,由于同源策略,我们无法直接发送跨域请求。这时,我们可以使用 JSONP(JSON with Padding)来绕过这个限制。以下是一个使用 JSONP 的例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8">meta name="viewport" content="width=device-width, initial-scale=1.0"><title>jQuery ajax() 方法处理 JSONP 请求</title><!-- 引入 jQuery 库 --><script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body><button id="getJsonpDataButton">获取 JSONP 数据</button><div id="jsonpDataContainer"></div><script>// 等待文档加载完成$(document).ready(function () {// 监听按钮点击事件$("#getJsonpDataButton").click(function () {// 使用 ajax() 方法发起 JSONP 请求$.ajax({url: "https://api.themoviedb.org/3/movie/550",method: "GET",dataType: "jsonp", // 指定数据类型为 JSONPdata: {api_key: "YOUR_API_KEY"},success: function (data) {// 请求成功时的处理$("#jsonpDataContainer").text(data.title);},error: function (xhr, status, error) {// 请求失败时的处理console.error("请求失败:", status, error);}});});});</script>
</body>
</html>

在这个例子中,我们通过设置 dataType: "jsonp" 来告诉 jQuery 发起一个 JSONP 请求。这允许我们跨域获取数据。需要注意的是,JSONP 请求不支持 POST 方法,仅支持 GET 方法。

Ajax 事件

ajax() 方法还提供了一系列的事件,使我们能够在请求的不同阶段执行自定义的操作。以下是一些常用的 Ajax 事件:

  • beforeSend:在发送请求之前执行的函数。
  • success:在请求成功完成时执行的函数。
  • error:在请求失败时执行的函数。
  • complete:在请求完成时(不论成功或失败)执行的函数。

下面是一个使用 beforeSendcomplete 事件的例子:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>jQuery ajax() 方法的事件</title><!-- 引入 jQuery 库 --><script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body><button id="getDataButton">获取数据</button><div id="dataContainer"></div><script>// 等待文档加载完成$(document).ready(function () {// 监听按钮点击事件$("#getDataButton").click(function () {// 使用 ajax() 方法发起 GET 请求$.ajax({url: "https://jsonplaceholder.typicode.com/posts/1",method: "GET",beforeSend: function () {// 请求发送前的操作console.log("请求即将发送...");},success: function (data) {// 请求成功时的处理$("#dataContainer").text(data.title);},error: function (xhr, status, error) {// 请求失败时的处理console.error("请求失败:", status, error);},complete: function () {// 请求完成时的操作console.log("请求已完成。");}});});});</script>
</body>
</html>

在这个例子中,我们使用了 beforeSendcomplete 事件来执行在请求开始和结束时的操作。这些事件可以为我们提供更灵活的控制,以满足特定的需求。

全局设置

如果你希望为所有的 Ajax 请求设置一些默认的配置,可以使用 $.ajaxSetup() 方法。这个方法接受一个对象,其中包含了默认的设置。这些设置将应用于所有使用 ajax() 方法的请求。以下是一个示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>jQuery ajaxSetup() 方法</title><!-- 引入 jQuery 库 --><script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
</head>
<body><button id="getDataButton">获取数据</button><div id="dataContainer"></div><script>// 设置全局默认配置$.ajaxSetup({beforeSend: function () {console.log("全局设置:请求即将发送...");},complete: function () {console.log("全局设置:请求已完成。");}});// 等待文档加载完成$(document).ready(function () {// 监听按钮点击事件$("#getDataButton").click(function () {// 使用 ajax() 方法发起 GET 请求$.ajax({url: "https://jsonplaceholder.typicode.com/posts/1",method: "GET",success: function (data) {// 请求成功时的处理$("#dataContainer").text(data.title);},error: function (xhr, status, error) {// 请求失败时的处理console.error("请求失败:", status, error);}});});});</script>
</body>
</html>

在这个例子中,我们使用 $.ajaxSetup() 方法设置了 beforeSendcomplete 事件的默认行为。这样,所有使用 ajax() 方法的请求都会继承这些全局设置。

结语

通过本文的介绍,你应该对 jQuery 中的 ajax() 方法有了更深入的了解。这个方法提供了许多选项和事件,使我们能够轻松地处理各种异步请求的场景。同时,全局设置的使用能够进一步简化代码,提高可维护性。希望这篇博客能够帮助你更加熟练地使用 jQuery 进行前端开发,愿你的代码更加优雅、高效!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

相关文章:

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`

嗨&#xff0c;亲爱的读者们&#xff01;欢迎来到这篇关于使用 jQuery 中的 ajax() 方法进行 Ajax 请求的博客。在前端开发中&#xff0c;jQuery 提供了简便而强大的工具&#xff0c;其中 ajax() 方法为我们处理异步请求提供了便捷的解决方案。无需手动创建 XMLHttpRequest 对象…...

I.MX6ULL开发笔记(一)——环境搭建、镜像烧录、网络连接

本系列为使用野火IMX6ULL开发的学习笔记&#xff0c;使用的开发板为如下&#xff1a; 具有的硬件资源有如下&#xff1a; 文章目录 一、环境搭建Win11安装WSL安装串口驱动安装串口工具安装Ubuntu与windows文件互传 二、镜像烧录修改串口终端登录前信息 三、fire-config工具配…...

Javaweb之Ajax的详细解析

1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据&#xff0c;如下图所示的表格中的学生信息&#xff0c;应该来自于后台&#xff0c;那么我们的后台和前端是互不影响的2个程序&#xff0c;那么我们前端应该如何从后台获取数据呢&#xff1f;因为是2个程序&#xff0c;所以…...

java基于RestTemplate的微服务发起http请求

实现的效果...

django理解02 前后端分离中的问题

前后端分离相对于传统方式的问题 前后端数据交换的问题跨域问题 页面js往自身程序&#xff08;django服务&#xff09;发送请求&#xff0c;这是浏览器默认接受响应 而请求其它地方是浏览器认为存在潜在危险。自动隔离请求&#xff01;&#xff01;&#xff01; 跨域问题的解决…...

设计模式-迭代器模式-笔记

动机&#xff08;Motivaton&#xff09; 在软件构建过程中&#xff0c;集合对象内部结构常常变化各异。但对于这些集合对象&#xff0c;我们呢希望在不暴露其内部结构的同时&#xff0c;可以让外部客户代码透明地访问其中包含的元素&#xff1b;同时这种“透明遍历”也为“同一…...

【数据结构】C语言实现队列

目录 前言 1. 队列 1.1 队列的概念 1.2 队列的结构 2. 队列的实现 2.1 队列的定义 2.2 队列的初始化 2.3 入队 2.4 出队 2.5 获取队头元素 2.6 获取队尾元素 2.7 判断空队列 2.8 队列的销毁 3. 队列完整源码 Queue.h Queue.c &#x1f388;个人主页&#xff1a…...

牛客——OR36 链表的回文结构(C语言,配图,快慢指针)

目录 思路一&#xff1a;链表翻转 思路二&#xff1a;快慢指针&#xff0c;分别从头和尾间开始比较 本题是没有对C的支持的&#xff0c;但因为CPP支持C&#xff0c;所以这里就用C写了&#xff0c;可以面向更多用户 链表的回文结构_牛客题霸_牛客网 (nowcoder.com) 思路一&am…...

Docker build 技巧 —— 筑梦之路

实现目标 更快的构建速度 更小的Docker镜像大小 更少的Docker镜像层 充分利用镜像缓存 增加Dockerfile可读性 让Docker容器使用起来更简单 如何实现 编写.dockerignore文件 容器只运行单个应用 将多个RUN指令合并为一个 基础镜像的标签不要用latest 每个RUN指令后删除…...

2 Redis的高级数据结构

1、Bitmaps 首先&#xff0c;最经典的应用场景就是用户日活的统计&#xff0c;比如说签到等。 字段串&#xff1a;“dbydc”&#xff0c;根据对应的ASCII表&#xff0c;最后可以得到对应的二进制&#xff0c;如图所示 一个字符占8位&#xff08;bit&#xff09;&#xff0c;…...

Hive默认分割符、存储格式与数据压缩

目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

update_engine-FilesystemVerifierAction和PostinstallRunnerAction

在介绍完了DownloadAction之后&#xff0c;还剩下FilesystemVerifierAction和PostinstallRunnerAction&#xff0c;下面开始对其进行分析。 FilesystemVerifierAction 在数据下载完成后&#xff0c;在DownloadAction中会切换到FilesystemVerifierAction void DownloadAction:…...

深度学习乳腺癌分类 计算机竞赛

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…...

【Python百宝箱】掌握Python Web开发三剑客:Flask、Django、FastAPI一网打尽

前言 在当今互联网时代&#xff0c;Web应用的开发变得愈发重要和复杂。选择一个合适的Web框架&#xff0c;掌握安全性与认证、数据库与ORM库、前端框架与交互、测试与调试工具等关键知识点&#xff0c;是每个Web开发者都必须面对的挑战。本文将带你深入了解三个流行的Python W…...

【人工智能时代的刑法体系与责任主体概述】

第一节&#xff1a;引言 随着科技的快速发展&#xff0c;人工智能 (Artificial Intelligence, AI) 正日益成为我们生活中不可或缺的一部分。从自动驾驶汽车到语音助手&#xff0c;从智能家居到金融机器人&#xff0c;AI 的广泛应用正不断改变着我们的生活方式和社会结构。然而…...

透视maven打包编译正常,intellj idea编译失败问题的本质

前言 maven多模块类型的项目&#xff0c;在Java的中大型应用中非常常见&#xff0c; 在 module 很多的情况&#xff0c;经常会出现各种各样的编辑依赖错误问题&#xff0c;今天记录一种比较常见的 case &#xff1a; A 子模块依赖 B 子模块&#xff0c;在 Terminal 上终端上 …...

npm报错

npm报错 npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! npm ERR! For a full report s…...

【FFmpeg实战】ffmpeg播放器-音视频解码流程

音视频介绍 音视频解码流程 FFmpeg解码的数据结构说明 AVFormatContext&#xff1a;封装格式上下文结构体,全局结构体,保存了视频文件封装格式相关信息AVInputFormat&#xff1a;每种封装格式&#xff0c;对应一个该结构体AVStream[0]&#xff1a;视频文件中每个视频&#xff…...

基于SSM的高校毕业选题管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

一个简单的Oracle Redaction实验

本实验包含了&#xff1a; 简单的Oracle Redaction演示针对指定用户的Redaction 实验环境 假设有一个19c多租户数据库&#xff0c;PDB名为orclpdb1。 我们将在orclpdb1中建立2个用户&#xff1a; redact_user: redact管理员schema_user: schema用户 基础实验 首先进入数…...

如何轻松实现单机游戏分屏多人:Nucleus Co-Op完整指南

如何轻松实现单机游戏分屏多人&#xff1a;Nucleus Co-Op完整指南 【免费下载链接】nucleuscoop Starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirrors/nu/nucleuscoop 还在为找不到联机伙伴而烦恼吗&a…...

Win11Debloat系统优化工具:全面提升Windows性能的技术指南

Win11Debloat系统优化工具&#xff1a;全面提升Windows性能的技术指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...

SVN分支管理避坑指南:为什么你的Merge two different trees总会删文件?

SVN分支合并的底层逻辑与实战避坑指南 当你面对SVN分支合并时是否经常遇到文件神秘消失的情况&#xff1f;特别是使用TortoiseSVN的"Merge two different trees"功能时&#xff0c;那些本应保留的文件为何总是不翼而飞&#xff1f;本文将深入解析SVN合并的底层机制&a…...

用YOLOv8在树莓派上跑个‘狗脸识别’:斯坦福犬类数据集实战与轻量化部署指南

树莓派上的智能犬种识别&#xff1a;YOLOv8轻量化部署全流程实战 当你在公园遛狗时&#xff0c;有没有遇到过路人好奇询问狗狗品种的情况&#xff1f;传统的犬种识别往往依赖专业兽医或资深养犬人士的经验判断&#xff0c;而今天我们将用一块信用卡大小的树莓派&#xff0c;配合…...

低成本GPU算力优化:cv_unet_image-colorization显存占用实测与调优

低成本GPU算力优化&#xff1a;cv_unet_image-colorization显存占用实测与调优 1. 项目背景与价值 在数字影像修复领域&#xff0c;AI图像上色技术正成为越来越受欢迎的工具。基于UNet架构的cv_unet_image-colorization模型&#xff0c;通过深度学习算法能够智能识别黑白图像…...

GitHub功能全景:从代码创作到企业级方案的技术生态

【导语&#xff1a;GitHub作为全球知名的代码托管平台&#xff0c;提供了丰富多样的功能&#xff0c;涵盖AI代码创作、开发者工作流、应用程序安全等多个领域&#xff0c;还针对不同规模公司、用例和行业提供解决方案&#xff0c;对软件开发行业产生着深远影响。】【GitHub的多…...

从按键消抖到外部中断:STM32 GPIO输入模式的‘避坑’指南与AFIO的隐藏用法

从按键消抖到外部中断&#xff1a;STM32 GPIO输入模式的‘避坑’指南与AFIO的隐藏用法 在嵌入式开发中&#xff0c;GPIO&#xff08;通用输入输出&#xff09;接口是与外部世界交互的第一道门槛。对于STM32开发者来说&#xff0c;GPIO配置看似简单&#xff0c;却暗藏诸多细节陷…...

租车宝 token、payload算法分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 部分python代码 url "/queryOr…...

如何评估 SEO 优化的成本效益_SEO优化应该重点关注哪些方面

如何评估 SEO 优化的成本效益 在当今互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为了提升网站流量和品牌知名度的关键手段。SEO 优化的成本效益评估并不是一件简单的事情。如何在有限的预算内实现最大的效益&#xff0c;是每一个企业和网站运营者都需…...

GLM-4.1V-9B-Base开发入门:PyCharm专业版连接远程解释器进行模型调试

GLM-4.1V-9B-Base开发入门&#xff1a;PyCharm专业版连接远程解释器进行模型调试 1. 为什么需要远程调试 在AI模型开发过程中&#xff0c;我们经常遇到一个典型问题&#xff1a;本地机器性能不足&#xff0c;无法高效运行大型语言模型。GLM-4.1V-9B-Base这类模型通常需要GPU加…...