Ajax-AJAX请求的不同发送方式

🥔:你一定能成为想要成为的人

发送AJAX请求不同方式

    • 发送AJAX请求不同方式
      • 1、jQuery发送AJAX请求
      • 2、axios发送AJAX请求(重点)
      • 3、fetch发送AJAX请求

发送AJAX请求不同方式

1、jQuery发送AJAX请求

首先需要jquery的js文件,资源路径:jquery (v3.6.4) - jQuery 是一个高效、精简并且功能丰富的 JavaScript 工具库。它提供的 API 易于使用且兼容众多浏览器,这让诸如 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作更加简单。 | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务

使用jQuery发送get、post、和自定义请求头:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <link
      crossorigin="anonymous"
      href="https://cdn.bootcdn.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
    />
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <h2 class="page-header">jQuery发送AJAX请求</h2>
      <button class="btn btn-primary">GET</button>
      <button class="btn btn-danger">POST</button>
      <button class="btn btn-info">通用型方法ajax</button>
    </div>
    <script>
      //GET请求
      $("button")
        .eq(0)
        .click(function () {
          $.get(
            "http://127.0.0.1:8000/jquery-server",
            {
              //参数
              a: 100,
              b: 1000,
            },
            function (data) {
              //响应体
              console.log(data);
            },
            "json"
          ); //返回JSON类型
        });
      //POST请求
      $("button")
        .eq(1)
        .click(function () {
          $.post(
            "http://127.0.0.1:8000/jquery-server",
            {
              a: 100,
              b: 1000,
            },
            function (data) {
              //响应体
              console.log(data);
            }
          );
        });
      //通用型方法ajax
      $("button")
        .eq(2)
        .click(function () {
          $.ajax({
            //请求类型
            type: "GET",
            //url
            url: "http://127.0.0.1:8000/jquery-server",
            //参数
            data: { a: 100, b: 200 },
            //响应体结果设置
            dataType: "json",
            //成功的回调
            success: function (data) {
              console.log(data);
            },
            //超时时间
            timeout: 2000,
            //失败的回调
            error: function () {
              console.log("出错了!");
            },
            //头信息设置
            headers: {
              name: "lw",
              password: "lww",
            },
          });
        });
    </script>
  </body>
</html>

server.js:

//jQuery服务
app.all("/jquery-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

2、axios发送AJAX请求(重点)

首先需要jquery的js文件,资源路径:点击此处

安装axios: 脚手架目录npm i axios
先配置服务端,类型改成all,然后允许接收自定义请求头

//axios服务
app.all("/axios-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

axios发送请求成功的值是一个封装好的响应对象:

请添加图片描述

我们想要的响应数据藏在response.data

我们使用axios发送GET请求、POST请求和通用请求:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>axios发送AJAX请求</title>
    <link
      crossorigin="anonymous"
      href="https://cdn.bootcdn.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css"
    />
    <script
      crossorigin="anonymous"
      src="https://cdn.bootcdn.net/ajax/libs/axios/1.3.6/axios.min.js"
    ></script>
  </head>
  <body>
    <button>GET</button>
    <button>POST</button>
    <button>AJAX</button>

    <script>
      const btns = document.querySelectorAll("button");
      //配置baseURL
      axios.defaults.baseURL = "http://127.0.0.1:8000";

      //GET请求
      btns[0].onclick = function () {
        //GET请求
        axios
          .get("/axios-server", {
            //url参数
            params: {
              id: 100,
              vip: 7,
            },
            //请求头信息
            headers: {
              name: "xixi",
              age: 18,
            },
          })
          .then((value) => {
            console.log("全部响应结果:", value);
            console.log("响应状态码:", value.status);
            console.log("响应状态字符串:", value.statusText);
            console.log("响应头信息:", value.headers);
            console.log("响应体:", value.data);
          });
      };

      //POST请求
      btns[1].onclick = function () {
        axios.post(
          "/axios-server",
          {
            //请求体
            username: "admin",
            password: "admin",
          },
          {
            //url参数
            params: {
              id: 200,
              vip: 8,
            },
            //请求头信息
            headers: {
              name: "heihei",
              age: 20,
            },
          }
        );
      };

      //axios发送通用请求
      btns[2].onclick = function () {
        axios({
          //请求方法
          method: "POST",
          //url
          url: "axios-server",
          //url参数
          params: {
            id: 300,
            vip: 9,
          },
          //请求头信息
          headers: {
            name: "hehe",
            age: 21,
          },
          //请求体参数
          data: {
            username: "admin",
            password: "admin",
          },
        }).then((response) => {
          console.log("全部响应结果:", response);
          console.log("响应状态码:", response.status);
          console.log("响应状态字符串:", response.statusText);
          console.log("响应头信息:", response.headers);
          console.log("响应体:", response.data);
        });
      };
    </script>
  </body>
</html>
  • 注意看他们之间的区别,多去浏览器f12查看他们信息分别放在哪。

3、fetch发送AJAX请求

fetch优点:它不像jquery和axios需要引入第三方库,它直接就能用,它就在window的内置对象中,直接就能用调用fetch函数。

fetch缺点:那就是返回的数据需要包两层promise,还有就是IE不兼容fetch。

server.js:

//fetch服务
app.all("/fetch-server", (request, response) => {
  //设置响应头 设置允许跨域
  response.setHeader("Access-Control-Allow-Origin", "*");
  //设置响应头 设置允许接收自定义请求头
  response.setHeader("Access-Control-Allow-Headers", "*");
  //设置响应
  const data = { name: "haha" };
  response.send(JSON.stringify(data));
});

fetch发送请求:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>fetch发送AJAX请求</title>
  </head>
  <body>
    <button>AJAX请求</button>

    <script>
      const btn = document.querySelector("button");
      btn.onclick = () => {
        fetch("http://127.0.0.1:8000/fetch-server?a=1&b=2", {
          //请求方法
          method: "POST",
          //请求头
          headers: { name: "www" },
          //请求体
          body: {
            username: "www",
            password: "123",
          },
        })
          .then((response) => {
            return response.json(); //把json字符串转换为js对象
          })
          .then((response) => {
            //第二个then处理上一个返回的正确结果
            console.log(response);
          });
      };
    </script>
  </body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

集合Collection-List-ArrayList学习

一、集合 集合是数据容器。相较于数组集合具有以下几个特点&#xff1a; 数组一旦创建&#xff0c;长度不可改变。集合的长度会自动扩容。集合具有很多数组没有的功能函数API数组元素的存储特点单一&#xff0c;不同的集合有不同的存储特点。 1. Collection顶层接口 Collect…

用python来爬取某鱼的商品信息(2/2)

目录 上一篇文章 本章内容 设置浏览器为运行结束后不关闭&#xff08;可选&#xff09; 定位到搜索框的xpath地址 执行动作 获取cookie 保存为json文件 修改cookie的sameSite值并且导入cookie 导入cookie&#xff08;出错&#xff09; 导入cookie&#xff08;修改后&…

Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)

1.简介 上一篇中已经将其的理论知识介绍了一下&#xff0c;这一篇就带着大家一步一步的把上一篇介绍的理论知识实践一下&#xff0c;然后再说一下如何创建高级web测试计划。 2.网络计划实战 通过上一篇的学习&#xff0c;将其分类为&#xff1a; &#xff08;1&#xff09;不需…

python -- 函数闭包

1. LEGB规则 L: local 是局部作用域 E: Enclosed 是嵌套函数的外层函数作用域 G: Global 全局作用域 B:Build-In 内置作用域 变量的使用权重&#xff1a;局部变量 > 外层作用域变量 > 全局变量 > 内置变量 下面代码执行后&#xff0c;x变量的值分别为多少&#xff1…

KafkaStream:Springboot中集成

1、在kafka-demo中创建配置类 配置kafka参数 package com.heima.kafkademo.config;import lombok.Data; import org.apache.kafka.common.serialization.Serdes; import org.apache.kafka.streams.StreamsConfig; import org.springframework.boot.context.properties.Configu…

怎么做Tik Tok海外娱乐公会呢?新加坡市场怎么样?

一、为什么选择TikTok直播 1. 海外市场潜力巨大 • 自2016年始&#xff0c;多家直播平台陆续拓展至东南亚、中东、俄罗斯、日韩、欧美、拉美等地区。 • 海外市场作为直播发展新蓝海&#xff0c;2021年直播行业整申请cmxyci体规模达百亿美元&#xff0c;并维持高速增长。 &a…

【数据结构系列】链表

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

异常(下)Java常见异常,异常的使用原则

文章目录 前言一、Java常见异常 1.常见异常2.实例展示二、异常的使用原则总结 前言 该文介绍了Java的一些常见异常&#xff0c;并给出对应的例子进行解释。介绍异常的使用原则&#xff0c;即创建&#xff0c;抛出异常的编程规范。 一、Java常见异常 前要&#xff1a;Java API中…

sklearn机器学习库(一)sklearn中的决策树

sklearn机器学习库(一)sklearn中的决策树 sklearn中决策树的类都在”tree“这个模块之下。 tree.DecisionTreeClassifier分类树tree.DecisionTreeRegressor回归树tree.export_graphviz将生成的决策树导出为DOT格式&#xff0c;画图专用tree.export_text以文字形式输出树tree.…

Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)

1.简介 在实际工作中&#xff0c;我们经常会听到数据库的性能和稳定性等等&#xff0c;这些有时候也需要测试工程师去评估和测试&#xff0c;因此这篇文章主要介绍了jmeter连接和创建数据库测试计划的过程,在文中通过示例和代码非常详细地介绍给大家&#xff0c;希望对各位小伙…

基于YOLOv8+PyQt5开发的行人过马路危险行为检测告警系统(附数据集和源码下载)

系列文章目录 文章目录 系列文章目录前言欢迎来到我的博客&#xff01;我很高兴能与大家分享关于基于YOLOv8的行人过马路危险行为检测告警系统的内容。 一、系统特点1. 采用最新最优秀的目标检测算法YOLOv82. 系统分别基于PyQt5开发了两种GUI图形界面&#xff0c;供大家学习使用…

consul安装启动流程

普通软件包安装 首先cd /opt &#xff0c;将安装包放到该目录下 下载consul安装包 进入consul官网找到自己开发平台对应的安装包下载 https://www.consul.io/downloads.html 或使用命令 wget https://releases.hashicorp.com/consul/1.6.2/consul_1.6.2_linux_amd64.zip (如果…

解决lldb调试时可能出现的personality set failed: Function not implemented

最近在尝试使用Visual Studio 2022远程连接Linux进行C/C的开发&#xff0c;由于CentOS风波不断&#xff0c;所以现在的开发基本上都是使用ubuntu了&#xff0c;但是目前VS2022有一些BUG&#xff0c;就是远程调试时&#xff0c;如果目标系统是ubuntu则会出现启动调试器很慢的问题…

js设置css变量控制页面一行展示指定个数的元素

前置知识&#xff1a; CSS变量之var()函数的应用——动态修改样式 & root的使用 flex相关知识 场景&#xff1a; 动态设置给父元素内子元素设置每行排列几个 通过 document.body.style.setProperty(--itemNum, 5)设置样式变量&#xff0c;然后通过给父元素设置display: f…

PyQt5的信号与槽函数

目录 一、介绍 二、一个信号连接一个槽 三、一个信号连接多个槽 四、多个信号连接一个槽 五、自定义信号 1、创建自定义信号 2、让自定义信号携带值 一、介绍 在下图中 &#xff08;1&#xff09;widget就是PyQt中的控件对象。其实就是组件&#xff08;2&#xff09;…

uniapp 用 hbuilderx下载 uview

uView2.0重磅发布&#xff0c;利剑出鞘&#xff0c;一统江湖 - DCloud 插件市场 1.uniapp官网下载资源 2按下载 3.官网安装文档 要按 这个红色圈错了 然后看他的配置步骤 第四easycom 就可以 不用配了

Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)

文章目录 前言一、温度湿度曲线布局二、环境监测界面布局三、摄像头界面布局总结 前言 本篇文章来完成另外三个界面的布局设置。 这里会使用到 feiyangqingyun的一些控件库。 一、温度湿度曲线布局 TempHumtiy.h: #ifndef TEMPHUMTIY_H #define TEMPHUMTIY_H#include <…

Java-运算符和控制语句(上)(基于c语言的补充)

算术运算符 关于求余 不管分子&#xff0c;分母是正还是负&#xff0c;对于分母&#xff0c;直接取正&#xff1b;对于分子若有负号&#xff0c;则先提取出来&#xff1b;剩下两个正的分子分母运算&#xff1b;最后&#xff0c;若刚才的分子有负号&#xff0c;对最后的结果添加…

[C语言] 指针

1. 指针是什么 2. 指针和指针类型 3. 野指针 4. 指针运算 5. 指针和数组 6. 二级指针 7. 指针数组 目录 1. 指针是什么&#xff1f; 2. 指针和指针类型 2.1 指针-整数 2.2 指针的解引用 3. 野指针 3.1 野指针成因 3.2 如何规避野指针 4. 指针运算 4.1 指针…

第三课-界面介绍SD-Stable Diffusion 教程

前言 我们已经安装好了SD&#xff0c;这篇文章不介绍难以理解的原理&#xff0c;说使用。以后再介绍原理。 我的想法是&#xff0c;先学会画&#xff0c;然后明白原理&#xff0c;再去提高技术。 我失败过&#xff0c;知道三天打鱼两天晒网的痛苦&#xff0c;和很多人一样试了…