【JavaEE】_ajax构造HTTP请求

目录

1. ajax简述

2. ajax构造HTTP请求

2.1 jquery库的引入

2.2 ajax构造HTTP请求格式

3. ajax构造GET请求实例

4. ajax构造POST请求实例


本专栏关于form表单构造HTTP请求一文中已经提到:form表单构造法只支持GET和POST,且会触发页面跳转。

原文详情链接如下:

【JavaEE】_form表单构造HTTP请求-CSDN博客

为了解决这两个问题,又引出了ajax构造HTTP请求的方法:

1. ajax简述

1.ajax本质是用js提供的API来构造HTTP请求

同时对于服务器返回给客户端的响应,同样可以使用js灵活处理,给前端代码带来了更多的可操作空间;

2. 当今网站的的主体都是通过ajax的方式进行交互的;

3. 浏览器原生也提供了ajax的API,但并不方便实用,步骤繁琐。因此有一些第三方库封装了ajax,本专栏使用 jquery 库封装的ajax

2. ajax构造HTTP请求

2.1 jquery库的引入

可从以下链接引入jquery库:

https://www.bootcdn.cn/jquery/

操作如下:

2.2 ajax构造HTTP请求格式

1. $ 是一个jquery定义的全局变量名,可以通过这个变量调用一些方法,使用jquery中的API;

2. $.ajax();中传递的参数是一个对象,在js中,{}表示一个对象,在{}内部使用键值对描述属性名与属性值:

3. 对象的属性值可以是一个函数,比如可以写为:

    <script>// 此时函数名就为callbackfunction callback(body){}$.ajax({type: 'get',url: 'https://www.sogou.com/abc.html',success:callback,});</script>

但是这种写法并不常见,通常会使用匿名函数的形式

    <script>$.ajax({type: 'get',url: 'https://www.sogou.com/abc.html',success:function(body){}});</script>

此处函数并不是立即返回的,而是服务器返回200这样的响应时才会执行到success,即:

success执行时机不是程序员自己能控制的,而是在合适的时候自动被调用的,这样的函数被称为回调函数

常见的回调函数还有:函数指针,Comparable和Comparator,compareTo,compare函数,线程中的run方法等等

4. 函数的参数为body即HTTP响应的body内容,为了方便调试,通常会使用console.log对body进行打印;

5.  此时构造的get请求没有query string,可以直接进行拼接,如:

    <script>let value1 = '1';$.ajax({type: 'get',url: 'https://www.sogou.com/abc.html?' + 'key1='+value1,success:function(body){console.log(body);}});</script>

注意js的定义变量直接使用let进行定义,变量具体类型是根据=后面初始化的值的类型来确定的;

3. ajax构造GET请求实例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ajax</title>
</head>
<body><!-- 1. 引入jquery库 --><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!-- 2. 再引入一个script标签用于编写自定义内容 --><script>let value1 = '1';$.ajax({type: 'get',url: 'https://www.sogou.com/abc.html?' + 'key1='+value1,success:function(body){console.log(body);}});</script>
</body>
</html>

运行程序;

可以使用Fiddler抓包查看请求与响应详情:

HTTP请求:

HTTP响应:

4. ajax构造POST请求实例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>ajax</title>
</head>
<body><!-- 1. 引入jquery库 --><script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script><!-- 2. 再引入一个script标签用于编写自定义内容 --><script>let body = {key1: 1,key2: 2};$.ajax({type: 'post',contentType: "application/json",data: JSON.stringify(body),url: 'https://www.sogou.com/abc.html',success:function(body){console.log(body);}});</script>
</body>
</html>

注:1. JSON.stringfy()可以将一个js对象转成一个JSON格式的字符串,即把前文的body对象转为了JSON格式的字符串data;

2.注意ajax构造post请求与构造get请求的不同,包括body部分的对象需转为JSON格式字符串,无需url的query string部分等等;

3. 此例为ajax构造的POST请求发送给搜狗服务器,但并不是所有的路径都支持ajax的POST请求,此例仅用于展示ajax构造POST请求的格式。后续自行完成服务器的编写才可以实现相应的服务器配合;

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

vue3+js 实现记住密码功能

常见的几种实现方式 1 基于spring security 的remember me 功能 ​​​​​​​ localStorage 除非主动清除localStorage 里的信息 &#xff0c;不然永远存在&#xff0c;关闭浏览器之后下次启动仍然存在 存放数据大小一般为5M 不与服务器进行交互通信 cookies 可以…

装修避坑干货|阳台洗衣柜洗衣机一体柜设计。福州中宅装饰,福州装修

装修的时候常常会在洗衣柜中嵌入洗衣机&#xff0c;其实阳台柜的安装并不像看起来的那么简单&#xff0c;下面给大家说说几个注意事项‼️ 01.水电位置 在安装阳台柜之前&#xff0c;务必确认水电管道的位置。确保阳台柜不会阻碍水电管道的使用&#xff0c;以免造成不必要的麻…

辉辉数码:目前电视盒子哪个最好?目前性能最好的电视盒子

大家好&#xff0c;我是辉辉&#xff0c;上期测评发布后我收到了很多粉丝的反馈希望我这期能分享电视盒子推荐&#xff0c;看看目前电视盒子哪个最好。我购入了市面上最热门的十几款电视盒子对比配置、系统后整理了五款目前性能最好的电视盒子推荐给大家。 品牌型号&#xff1…

C++多继承之菱形继承原理及解决方法

目录 1.单继承和多继承 2.菱形继承 3.虚继承解决菱形继承 3.1使用方法 3.2虚继承原理 4.继承和组合 1.单继承和多继承 一个子类只有一个父类称为单继承 一个子类有多个父类称为多继承 2.菱形继承 菱形继承是多继承的一种复杂的情况 这里会出现一个问题&#xff0c;Assi…

Python中回调函数的理解与应用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 前言 回调函数的概念 回调函数的基本用法 回调函数的实现方式 1 使用函数 2 使用类方法 3 使用类实…

洛谷P5723 质数口袋 题解

#题外话&#xff08;第39篇题解&#xff09;&#xff08;本题为普及-难度&#xff09; #先看题目 题目链接https://www.luogu.com.cn/problem/P5723 #思路&#xff08;看代码吧&#xff09; #代码 #include <bits/stdc.h> using namespace std; bool p(int p_i){for(i…

快速搭建keepalived+nginx

1.工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面…

数据脱敏(七)脱敏算法-洗牌算法

脱敏算法篇使用阿里云数据脱敏算法为模板,使用算子平台快速搭建流程来展示数据 "洗牌脱敏"是一种数据处理技术&#xff0c;主要用于保护个人隐私和数据安全。它通过随机打乱数据集中的记录顺序&#xff0c;使得基于行或列的攻击变得困难&#xff0c;从而防止数据泄露…

经典问题之区间分组

给定 N 个闭区间 [ai,bi]&#xff0c;请你将这些区间分成若干组&#xff0c;使得每组内部的区间两两之间&#xff08;包括端点&#xff09;没有交集&#xff0c;并使得组数尽可能小。 输出最小组数。 输入格式 第一行包含整数 N&#xff0c;表示区间数。 接下来 N 行&#…

【Python笔记-设计模式】代理模式

一、说明 代理模式是一种结构型设计模式&#xff0c;提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许在将请求提交给对象前后进行一些处理。 (一) 解决问题 控制对对象的访问&#xff0c;或在访问对象前增加额外的功能或控制访问 (二) 使用场景…

adb-连接模拟器和真机操作

目录 1. 连接模拟器&#xff08;夜神模拟器示例&#xff09; 1.1 启动并连接模拟器 1.2 开启调试模式 2. USB连接真机调试 2.1 usb数据线连接好电脑&#xff0c;手机打开调试模式 2.2 输入adb devices检测手机 3. Wifi连接真机调试 3.1 USB连接手机和电脑 3.2 运行 adb…

YOLO学习中的琐碎知识点

目录 一、导入的库 二、名词介绍 &#xff08;1&#xff09;pytorch张量 &#xff08;2&#xff09;边界框&#xff08;bounding box&#xff09; 三、pycharm操作 &#xff08;1&#xff09;参数设置 四、文件认识 五、YOLO如何训练自己的模型 一、导入的库 import to…

【python】学习笔记03-循环语句

1. whlie循环的基础语法 - while循环的语法格式 - while循环的注意事项 条件需提供布尔类型结果&#xff0c;True继续&#xff0c;False停止 空格缩进不能忘 请规划好循环终止条件&#xff0c;否则将无限循环 """ 演示while循环基础练习题&#xff1a;求1-100…

检索增强生成(RAG)-重新排序方法

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research),及时查看最新内容 原文标题:Advanced RAG 04: Re-ranking 原文地址:https://medium.com/towards-artificial-intelligence…

ros自定义action记录

文章目录 自定义action1. 定义action文件2. 修改 package.xml3. 修改 CMakeLists.txt4. 运行 catkin build5. simple_action_server.py6. simple_action_client.py 测试 自定义action ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.t…

IS(Inception Score)和FID(Frechet Inception Distance score)的定义,区别,联系。

IS&#xff08;Inception Score&#xff09;和FID&#xff08;Frechet Inception Distance score&#xff09;的定义&#xff0c;区别&#xff0c;联系&#xff1a; IS&#xff08;Inception Score&#xff09; 定义&#xff1a; IS基于Google的预训练网络Inception Net-V3。…

32单片机基础:对射式红外传感器计次

接线如下图&#xff1a; 在HardWare建立两个文件&#xff1a;如图 COuntSensor.c 如何配置外部中断,根据下面图&#xff0c;我们需要把外部中断从GPIO到NVIC这一路出现的外设模块都配置好。把这条信号打通就OK了。 1.配置RCC:把我们这里涉及的外设时钟都打开&#xff0c;不打…

C++ //练习 8.2 测试函数,调用参数为cin。

C Primer&#xff08;第5版&#xff09; 练习 8.2 练习 8.2 测试函数&#xff0c;调用参数为cin。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块见练习8.1 /**************************************************************…

FariyGUI × Cocos Creator 3.x 弹窗制作

在fgui里制作一个弹窗 新建一个按钮&#xff0c;作为返回按钮 新建一个标签 做成这个样子 其中包含两个节点&#xff0c;名称分别为title和closeButton 可以阅读fgui的源码window.js得到&#xff0c;closeButton按钮只需要输入名称即可在contentPane设置时自动绑定。 且会…

聊聊JVM运行时数据区的堆内存

聊聊JVM运行时数据区的堆内存 内存模型变迁&#xff1a; Java堆在JVM启动时创建内存区域去实现对象、数组与运行时常量的内存分配&#xff0c;它是虚拟机管理最大的&#xff0c;也是垃圾回收的主要内存区域 。 内存模型变迁&#xff1a; 为什么要有年轻区和老年区&#xff1f;…