XHR 和 AJAX 的结合 - API 测试

news2024/9/24 17:08:21

    大家好,之前一期介绍了怎样通过工具类进行对API 接口测试,这一期将演示如何手写一个 Ajax的请求。


    什么是 XHR ? 全称为 XMLHttpRequest ,它是浏览器内置的对象,使得 JavaScript 可以发送 HTTP 请求。
    什么是Ajax ? Ajax是一种用于创建快速动态网页的技术,在网页中利用XMLHttpRequest对象和服务器进行数据交互的方式。通过XmlHttpRequest对象向服务器发异步请求,从服务器获取数据。然后通过JavaScript来操作DOM而更新页面。也就是JavaScript可以及时向服务器提出请求和处理响应,而不阻塞程序运行,达到无刷新的效果。JavaScript是单线程的,会阻塞代码运行,所以引入了XmlHttpRequest请求处理异步数据。XHR 和 AJAX 技术的结合,可以使网页在不刷新的情况下局部更新页面内容,加快网页的展示。
    1. 创建 xhr 对象,主要有两种模式,兼容模式和标准模式。
    (1) 标准模式: xhr = new XMLHttpRequest()
    (2) 兼容模式:通过添加判断条件

在这里插入图片描述



      var xhr;
      if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
      } else {
        //for IE6, IE5 兼容
        xhr = new ActiveXObject('Microsoft.XMLHTTP');
      }


    2. 建立连接: 调用 xhr.open(参数1、参数2、参数3) 方法,连接服务器。

    参数1: 请求的方式,主要有 "GET" 和 "POST"
    参数2 : 请求的 URL
    参数3: 是否异步发送请求的 Boolean,通常不填,默认为 "TRUE", 表示异步发送,一般情况下,不推荐同步发送。

    以打开VIP 这个XHR加载的API

在这里插入图片描述



    打开这个API, 正常是返回了 {“result”:1}



在这里插入图片描述



在这里插入图片描述



    3. 发送请求 : xhr.send();
    4. 创建监听请求的readyStateChange事件

    其中判断的条件中,xhr.readyState 为4时 , 表示 下载操作完成;
xhr.status 为 200,表示响应状态码正常。



在这里插入图片描述



 // 发送请求
      xhr.send();

     // 创建监听请求的readyStateChange事件
      xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
          if (xhr.status === 200) {
            alert(xhr.responseText);
          } else {
            alert('出错了,Err:' + xhr.status);
          }
        }
      };


    请求结果正常显示,返回接口所响应的内容。



在这里插入图片描述



    再以 “GET” 为请求方式,进行测试。



在这里插入图片描述



在这里插入图片描述



    同样请求结果正常显示,返回接口所响应的内容。



在这里插入图片描述



xhr.open("GET","https://guangzhou.zbj.com/cgyx/api/getServiceBycate?categories%5B%5D=18077&categories%5B%5D=18078&categories%5B%5D=18079&categories%5B%5D=18081&categories%5B%5D=18082&sign=P20221222101&localCityId=3493&query%5Bsize%5D=5"); 

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

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

相关文章

Ubuntu用户权限、查看文件路径、防火墙

一、Ubuntu用户权限 1、设置root用户密码 sudo passwd root 新的 密码: 重新输入新的 密码: passwd:已成功更新密码2、普通用户赋予root权限 修改 /etc/sudoers 文件 su root vim /etc/sudoers把用户加入到root组 # root用户下操作 # -…

Elasticsearch 整合机器学习强化排序

作者:彭晟,2023 年 Elastic 开发者大会讲师 概述 Elasticsearch 整合机器学习强化排序, 介绍如何将机器学习预测能力迁移至 ES 内部,增强排序能力, 构建一个高性能,分布式搜排一体系统,并通过落地更多复杂模型特征和更…

[操作系统安全]缓冲区溢出

一、C栈帧结构 函数调用内存中的三个区域,代码区、静态数据区、动态数据区(压栈和清栈就是在这个区域完成的)。CPU中有三个寄存器,分别是eip、ebp和esp。eip永远指向代码区中将要执行的下一条指令,执行方式包括顺序执行…

NumberPicker分析(一)

NumberPicker分析(一) NumberPicker可实现连续滚动的字符串选择&#xff0c;其实现方式很有借鉴的意义 以最基本的使用方式为例&#xff0c;在layout中布局&#xff1a; <NumberPickerandroid:id"id/number_picker"android:layout_width"wrap_content"…

Visual Studio 2019 C# 上位机入门(1):制作一个简单应用

Visual Studio 2019下载安装步骤可以看&#xff1a;https://blog.csdn.net/weixin_44788542/article/details/114271126 这里不赘述&#xff0c;默认电脑上已经安装好了。 1、打开安装好的Visual Studio后&#xff0c;选择创建新项目。 2、找到选择C#下面的Windows 窗体应用&…

PCIe Protocol Basics

目录 1、PCIe Layered Architecture 2、Packet Movement 3、Simplified Layer Model 4、Layers and Packedt Generation 5、Detailed Layer Model 6、Transaction Layer 7、TransactionLayer Packet 8、TLP Header Overview 9、Data Link Layer 10、Data Link Layer Pa…

Vue 样式绑定

文章目录 Vue 样式绑定Vue classclass 属性绑定数组语法 Vue.js style(内联样式) Vue 样式绑定 Vue class class 与 style 是 HTML 元素的属性&#xff0c;用于设置元素的样式&#xff0c;我们可以用 v-bind 来设置样式属性。 Vue.js v-bind 在处理 class 和 style 时&#x…

php+vue+mysql医院医护人员医生排班系统

本医护人员排班系统管理员&#xff0c;医护。管理员功能有个人中心&#xff0c;医院信息管理&#xff0c;医护信息管理&#xff0c;医护类型管理&#xff0c;排班信息管理&#xff0c;排班类型管理&#xff0c;科室信息管理&#xff0c;投诉信息管理。医护人员可以修改自己的个…

Unity WebGL监听是否进入全屏模式

今天遇到一个需求打包成WebGL之后要当做一个iframe&#xff0c;嵌入到别的网页中&#xff0c;其中遇到两个难题。 1.要增加一个全屏模式。 2.全屏的时候使用unity中的title&#xff0c;非全屏的时候要使用网页本身的title。 全屏一开始使用webkitRequestFullScreen&#xff…

python+vue 家庭理财管理系统

本论文对家庭理财管理系统的发展背景进行详细的介绍&#xff0c;并且对系统开发技术进行介绍&#xff0c;然后对系统进行需求分析&#xff0c;对家庭理财管理系统业务流程、系统结构以及数据都进行详细说明。 1.系统功能完整性&#xff1a;根据系统每一个功能模块&#xff0c;都…

维度云工业品进销存ERP解决行业6大销售痛点

01 销售了多少?成本毛利多少? 如果不使用ERP软件进行管理&#xff0c;则需要手动记录和计算销售额和成本&#xff0c;并根据这些数据手动计算毛利润。这种方法可能会导致错误和时间浪费&#xff0c;并且很难应对规模扩大的情况。因此&#xff0c;通常建议企业使用专业的管理…

jenkins安装(Linux)

文章目录 请谨慎安装最新版本的jenkins1. Jenkins 介绍1.1 jenkins使用场景 2.jenkins下载2.1上传至Linux2.2 rpm安装jenkins2.3 修改jenkins配置2.3.1 修改内容 2.4 开放端口2.5 启动jenkins2.5.1 启动错误2.5.2 添加JAVA_HOME 2.6 jenkins配置添加自定义安装java目录2.7 Erro…

leetCode算法第一天

今天开始刷算法题&#xff0c;提升自己的算法思维和代码能力&#xff0c;加油&#xff01; 文章目录 无重复字符的最长子串最长回文子串N形变换字符串转换整数 无重复字符的最长子串 leetCode链接 https://leetcode.cn/problems/longest-substring-without-repeating-characte…

解决使用Auto-GPT本地部署时无法连接Google的问题和无法连接openai的问题

解决使用Auto-GPT本地部署时无法连接Google的问题 引言 在这篇博客文章中&#xff0c;我们将介绍如何解决使用Auto-GPT本地部署时遇到的无法访问Google的问题。文章的目标受众为编程者和AI工作者。 无法访问Google的问题 在使用Auto-GPT时&#xff0c;可能会遇到无法访问Go…

C++ :Lambda函数的浅学习

文章目录 前言一、lambda函数实例总结 前言 lambda表达式又被称之为lambda函数&#xff0c;是c11的新特性&#xff0c;下面我们看一下lambda表达式的参数等说明&#xff1a; [函数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型{ 函数体 } 下面我们…

EFI Driver Model(下)-USB 驱动设计

1、USB简介 通用串行总线&#xff08;英语&#xff1a;Universal Serial Bus&#xff0c;缩写&#xff1a;USB&#xff09;是一种串口总线标准&#xff0c;也是一种输入输出接口的技术规范&#xff0c;被广泛地应用于个人电脑和移动设备等信息通讯产品&#xff0c;并扩展至摄影…

ZLMediaKit流媒体服务器 RTSP推流时候的堆栈

先直接看图 这是ffmpeg向流媒体服务器推流时候的堆栈 引入C 11之后 堆栈会显得特别繁复冗余 看起来 也没有 以前没有C11之前那样 简单明了 太复杂了 标记下 很多函数名字被我改了 因为原来的看起来 同名函数太多了 C11 和lambada 匿名函数 让看堆栈 成了地狱模式 断点断在…

线程安全和线程不安全之chatgpt理解

对“线程安全”和“线程不安全”&#xff0c;我之前的常规理解是&#xff1a;线程安全&#xff1a;多线程对同一个数据或者容器进行访问或者处理&#xff0c;不会导致数据出现同步问题。线程不安全&#xff1a;多线程对同一个数据或者容器进行访问或者处理&#xff0c;会出现同…

【深度学习】【部署】Flask快速部署深度学习模型【入门】

【深度学习】【部署】Flask快速部署深度学习模型【入门】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【部署】Flask快速部署深度学习模型【入门】前言搭建简单的Web服务搭建深度学习的Web服务win10下打包成exe(选看)总结 前言…

web后端-请求响应

概述 我们之前在Spring写的 Java类&#xff0c;因为没有继承任何的接口 所以tomcat其实是不识别的&#xff0c;也不能直接运行 但是tomcat识别JavaEE的一项规范-Servlet,因为tomcat就相当于一个Servlet容器 SpringBoot底层提供了一个DisPatcherServlet类(实现了servlet接口)…