【JavaEE】_ajax构造HTTP请求

news2024/11/16 12:32:41

目录

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>
        // 此时函数名就为callback
        function 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://www.coloradmin.cn/o/1461925.html

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

相关文章

利用RBI(Remote Browser Isolation)技术访问ChatGPT

系统组网图 #mermaid-svg-Bza2puvd8MudMbqR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Bza2puvd8MudMbqR .error-icon{fill:#552222;}#mermaid-svg-Bza2puvd8MudMbqR .error-text{fill:#552222;stroke:#552222;…

Spring Cloud Alibaba-04-Sentinel服务容错

Lison <dreamlison163.com>, v1.0.0, 2023.09.10 Spring Cloud Alibaba-04-Sentinel服务容错 文章目录 Spring Cloud Alibaba-04-Sentinel服务容错高并发带来的问题服务雪崩效应常见容错方案Sentinel入门什么是Sentinel微服务集成Sentinel安装Sentinel控制台 实现一个接…

nc开发刚导入项目eclipse出现莫名其妙的错误,红叉,感叹号,文件missing

解决类出现红叉 解决感叹号&#xff0c;文件missing 其他问题 右上角的视图&#xff0c;要选择java&#xff0c;如果是javaEE也会有一些文件没有展示出来。

Project_Euler-05 题解

Project_Euler-05 题解 题目描述 思路 转换题意&#xff1a;2520是1到10这十个数的最小公倍数&#xff0c;求1到20这20个数的最小公倍数是多少&#xff1f; 我们可以先求两个数的最小公倍数&#xff0c;得出结果后再乘上一个新的数&#xff0c;依此类推&#xff0c;例如&…

⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)

106. 从中序与后序遍历序列构造二叉树 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postor…

VSCODE中使用Django处理后端data和data models

链接&#xff1a; Python and Django tutorial in Visual Studio Code MVC的理解 在实际的程序中采用MVC的方式进行任务拆分。 Model&#xff08;模型&#xff09;负责封装应用程序的数据和业务逻辑部分。Model包含数据结构&#xff0c;数据处理逻辑以及相关的操作方法&#…

c#创建安装windows服务

背景:最近在做设备数据对接采集时,遇到一些设备不是标准的Service-Client接口,导致采集的数据不够准确;比如设备如果中途开关机后,加工的数量就会从0开始重新计数,因此需要实时监控设备的数据,进行叠加处理;考略到工厂设备比较多,实时监听接口的数据为每秒3次,因此将…

HDFS中常用的Shell命令 全面且详细

HDFS中常用的Shell命令目录 一、ls命令 二、mkdir 命令 三、put命令 四、get命令 五、mv命令 六、rm命令 七、cp命令 八、cat命令 前言 安装好hadoop环境之后&#xff0c;可以执行hdfs相关的shell命令对hdfs文件系统进行操作&#xff0c;比如文件的创建、删除、修改文…

探索Promise异步模式抽象的变体——Promise.all篇

本人编程小白一枚&#xff0c;希望多多包涵~ 如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 异步揭示原理Promise.race未完待续&#xff08;……&#x…

问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

GoLand 2023:为Go开发者打造的智能IDE mac/win激活版

JetBrains GoLand 2023是一款专为Go语言开发者打造的集成开发环境(IDE)&#xff0c;它提供了强大的代码编辑、调试、测试和重构功能&#xff0c;帮助开发者更高效地开发Go应用程序。 GoLand 2023 软件获取 JetBrains GoLand 2023继承了JetBrains在开发工具领域的丰富经验&…

[论文阅读] 空间熵图像增强算法(Spatial Entropybased Contrast Enhancement in DCT)

[论文阅读] 空间熵图像增强算法(Spatial Entropybased Contrast Enhancement in DCT) 最近看到了一篇介绍传统图像增强算法的文章&#xff1a;基于空间熵的对比度增强算法 - 知乎 (zhihu.com)&#xff0c;从里面看到效果还不错&#xff0c;如下所示&#xff0c;因而详细看了下…

【8】证书公钥替换

0x01 问题描述 存在一个前置系统&#xff0c;数据包有登录信息。登录需要填入用户名&#xff0c;证书上传&#xff0c;私钥。如图&#xff1a; 提供数据包如下&#xff1a; POST /api/certLogin HTTP/1.1 Host: 192.168.11.153 Connection: keep-alive Content-Length: 934…

LLM之RAG实战(二十七)| 如何评估RAG系统

有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的&#xff1f;这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG&#xff08;Retrieval Augmented Generation&#xff09;想象成人工智能世界里聪明的书呆子&#xff0c;它会挖掘大量信息&#xff0c;准确地找到…

vue项目设置的端口号运行后会自动加一问题解决

vue项目设置的端口号运行后会自动加一问题解决 主要原因是之前运行项目后没有完全的关闭服务&#xff0c;导致再次运行项目端口号被占用&#xff0c;自动加一&#xff01; 问题解决 打开任务管理器&#xff0c;在进程中找到node相关进程&#xff0c;右键结束任务

【Java EE初阶二十一】http的简单理解(二)

2. 深入学习http 2.5 关于referer Referer 描述了当前页面是从哪个页面跳转来的&#xff0c;如果是直接在地址栏输入 url(或者点击收藏夹中的按钮) 都是没有 Referer。如下图所示&#xff1a; HTTP 最大的问题在于"明文传输”,明文传输就容易被第三方获取并篡改. …

React之拖动组件的设计(一)

春节终结束了&#xff0c;忙得我头疼。终于有时间弄自己的东西了。今天来写一个关于拖动的实例讲解。先看效果&#xff1a; 这是一个简单的组件设计&#xff0c;如果用原生的js设计就很简单&#xff0c;但在React中有些事件必须要多考虑一些。这是一个系列的文章&#xff0c;…

【Vuforia+Unity】AR04-地面、桌面平面识别功能

不论你是否曾有过相关经验&#xff0c;只要跟随本文的步骤&#xff0c;你就可以成功地创建你自己的AR应用。 官方教程Ground Plane in Unity | Vuforia Library 这个功能很棒&#xff0c;但是要求也很不友好&#xff0c;只能支持部分移动设备&#xff0c;具体清单如下&#xf…

2024牛客寒假算法基础集训营5 -- EF soyorin的数组操作

题目大意&#xff1a; 思路解析&#xff1a; 我们可以发现偶数情况下&#xff0c;我们可以无限做 k n的操作&#xff0c;这样一定会让数组变为非降序数组。 但是奇数情况下&#xff0c;最后一个数没有办法发生变化&#xff0c;所以我们只能统计怎样在保证i--n为非降序情况下最…

ELK Stack 日志平台搭建

前言 最近在折腾 ELK 日志平台&#xff0c;它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。 专门实操了一波&#xff0c;这玩意看起来简单&#xff0c;但是里面的流程步骤还是很多的&#xff0c;而且遇到了很多坑。在此记录和总结下。 本文亮点&#xff1a;…