零基础快速入门前端蓝桥杯 Web 备考:AJAX 与 XMLHttpRequest 核心知识点及实战(可用于备赛蓝桥杯Web应用开发)

零基础快速入门前端蓝桥杯 Web 备考:AJAX 与 XMLHttpRequest 核心知识点及实战(可用于备赛蓝桥杯Web应用开发)

在 Web 开发中,AJAX(Asynchronous JavaScript and XML) 是实现页面异步数据交互的核心技术,也是蓝桥杯 Web 应用开发赛道的高频必考点。本文将结合一段购物车实战代码,深入拆解 XMLHttpRequest、AJAX 请求流程、JSON 解析及 DOM 动态渲染等核心知识点,并通过表格汇总 + 代码实例的形式,帮助你高效备考。

一、XMLHttpRequest 对象基础

XMLHttpRequest 是 AJAX 的核心对象,用于在浏览器与服务器之间异步传输数据。代码中通过 const ajax = new XMLHttpRequest(); 创建了该对象,下面详解其核心方法与属性。

核心知识点

  • 创建对象:通过 new XMLHttpRequest() 初始化请求实例。
  • open(method, url):配置请求方法(如 GET/POST)和请求地址。
  • send():正式发送请求。
  • 事件回调onload(请求完成)、onerror(请求出错)处理响应。
  • 状态与数据status(HTTP 状态码)、responseText(响应文本)。

知识点汇总表

方法 / 属性

描述

代码示例

new XMLHttpRequest()

创建 AJAX 核心对象,用于与服务器交互数据

const ajax = new XMLHttpRequest();

open(method, url)

初始化请求,指定请求方法(GET/POST 等)和请求地址

ajax.open("GET", "./carList.json");

send()

发送请求

ajax.send();

onload

请求完成时触发的回调函数(无论成功或失败)

ajax.onload = () => { ... };

onerror

请求出错时触发的回调函数

ajax.onerror = () => { ... };

status

返回 HTTP 状态码(200 表示成功,404 未找到,500 服务器错误)

if (ajax.status === 200) { ... }

responseText

返回响应的文本内容(字符串格式)

const data = ajax.responseText;

代码实例(对应购物车代码)

// 1. 创建 XMLHttpRequest 对象 const ajax = new XMLHttpRequest(); // 2. 配置请求:GET方法,请求本地carList.json ajax.open("GET", "./carList.json"); // 3. 请求完成回调 ajax.onload = () => { if (ajax.status === 200) { // 判断HTTP状态码是否成功 console.log("响应数据:", ajax.responseText); } }; // 4. 错误处理 ajax.onerror = () => { console.error("请求出错!"); }; // 5. 发送请求 ajax.send();

二、AJAX 请求完整流程(五步核心)

代码中完整展示了 AJAX 请求的五个标准步骤,这是蓝桥杯 Web 题的核心答题框架,必须严格牢记。

流程分解

  1. 创建对象:初始化 XMLHttpRequest 实例。
  2. 配置请求:调用 open() 指定方法和地址。
  3. 绑定完成回调:通过 onload 处理响应数据。
  4. 绑定错误回调:通过 onerror 处理异常。
  5. 发送请求:调用 send() 正式发起请求。

知识点汇总表

步骤

说明

代码片段

1

创建 XMLHttpRequest 对象,作为数据交互的基础

const ajax = new XMLHttpRequest();

2

配置请求方法和地址(蓝桥杯常用 GET 请求本地 JSON)

ajax.open("GET", "./carList.json");

3

绑定onload回调,判断状态码并解析数据

ajax.onload = () => { if (ajax.status===200) { ... } };

4

绑定onerror回调,处理网络错误等异常情况

ajax.onerror = () => { console.error("请求出错"); };

5

调用send()正式发送请求

ajax.send();

蓝桥杯考点提示

  • 蓝桥杯 Web 题中,请求本地 JSON 文件是最常见的考法(如 carList.jsondata.json),open() 的 URL 直接写相对路径即可。
  • 必须判断 status === 200,否则可能解析到错误数据。

三、JSON 数据解析

蓝桥杯 Web 题中,接口返回的数据几乎都是 JSON 格式(轻量级数据交换格式),需要通过 JSON.parse() 将字符串转为 JavaScript 对象 / 数组,才能进行后续渲染。

核心知识点

  • JSON:本质是字符串,格式与 JS 对象 / 数组一致(如 '{"name":"苹果","price":5}')。
  • JSON.parse():将 JSON 字符串转为 JS 对象 / 数组。
  • JSON.stringify():将 JS 对象 / 数组转为 JSON 字符串(偶考,用于提交数据)。

知识点汇总表

方法

描述

代码示例

JSON.parse(str)

将 JSON 格式的字符串转换为 JavaScript 对象 / 数组

const data = JSON.parse('{"name":"苹果","price":5}');

JSON.stringify(obj)

将 JavaScript 对象 / 数组转换为 JSON 格式的字符串

const jsonStr = JSON.stringify({name:"苹果", price:5});

代码实例(对应购物车代码)

ajax.onload = () => { if (ajax.status === 200) { // 将JSON字符串解析为JS数组(假设carList.json返回数组) const data = JSON.parse(ajax.responseText); console.log("解析后的数组:", data); console.log("第一个商品:", data[0]); } };

四、DOM 操作与动态渲染

拿到解析后的数据后,需要动态创建 DOM 元素并渲染到页面,这是蓝桥杯 Web 题的最终落脚点(如生成商品列表、购物车项等)。

核心知识点

  • 获取容器:通过 document.querySelector() 获取页面中的父容器。
  • 创建元素:通过 document.createElement() 创建新标签。
  • 设置内容:通过 innerHTML 拼接 HTML 结构(结合模板字符串 `${}` 更方便)。
  • 添加到 DOM:通过 parent.appendChild(child) 将新元素插入页面。

知识点汇总表

方法 / 属性

描述

代码示例

document.querySelector(sel)

通过 CSS 选择器获取第一个匹配的元素(#id.class、标签等)

const list = document.querySelector('#list');

document.createElement(tag)

创建指定标签名的 DOM 元素

const item = document.createElement('div');

element.innerHTML

设置或获取元素内部的 HTML 内容(可解析标签)

item.innerHTML = ``;

parent.appendChild(child)

将子元素添加到父元素的末尾

list.appendChild(item);

element.className

设置或获取元素的 class 名称

item.className = "item";

代码实例(对应购物车代码)

<!-- HTML中需先准备容器 --> <div></div> <script> ajax.onload = () => { if (ajax.status === 200) { const data = JSON.parse(ajax.responseText); // 1. 获取容器 const list = document.querySelector('#list'); // 2. 循环数据,动态创建元素 for (let i = 0; i < data.length; i++) { const rowData = data[i]; // 当前商品数据 // 3. 创建div容器 const item = document.createElement('div'); item.className = "item"; // 设置class // 4. 拼接HTML内容(模板字符串) item.innerHTML = ` <img src="${rowData.img}"> <div> <div>${rowData.name}</div> <div>${rowData.price}</div> </div> `; // 5. 将item添加到list容器中 list.appendChild(item); } } }; </script>

五、蓝桥杯考点总结与实战建议

在蓝桥杯 Web 应用开发赛道中,“AJAX 请求本地 JSON + 动态 DOM 渲染” 是经典题型(如购物车、商品列表、成绩管理等)。结合本题代码,需重点掌握:

  1. 固定 AJAX 五步流程:严格按 “创建对象→open→onload→onerror→send” 书写,缺一不可。
  2. 本地 JSON 请求open() 的 URL 直接写题目提供的相对路径(如 ./data.json)。
  3. 状态码判断:必须在 onload 中判断 ajax.status === 200,再解析数据。
  4. 动态渲染三步骤:获取容器→循环创建元素→appendChild 添加,熟练使用模板字符串拼接内容。
  5. 易错点提醒
    1. HTML 中必须有对应的容器元素(如 id="list"),否则 querySelector 获取不到会报错。
    2. JSON.parse() 必须在 status === 200 后执行,避免解析失败。

总结

本文围绕购物车代码,拆解了 XMLHttpRequest、AJAX 流程、JSON 解析、DOM 操作四大核心模块,每个模块都通过 “知识点讲解 + 表格汇总 + 代码实例” 的形式呈现。蓝桥杯 Web 备考中,只需牢记这些固定流程和 API,多加练习类似题型(如动态生成商品列表、实现简单的购物车加减功能),就能轻松拿下这类高频考点。

Read more

CCF-CSP第38次认证第二题——机器人复健指南(满分题解)

题目背景 西西艾弗岛某山脉深处出土了一台远古机器人,具体年代已不可考。初步修缮后,研究人员尝试操控机器人进行些简单的移动。 题目描述 整个实验场地被划分为 n×n个方格,从 (1,1) 到 (n,n) 进行编号。机器人只能在这些方格间移动,不能走出场地范围。 如下图所示,假设机器人当前位于 (x,y),那么接下来可以向周围八个方向跳跃移动(如果目标方格在场地范围内): 若机器人只能跳动不超过 k 步,场地内有多少方格(包括起始位置)可以抵达? 输入格式 从标准输入读入数据。 输入的第一行包含空格分隔的两个正整数 n 和 k,分别表示场地大小和跳动步数。 输入的第二行包含空格分隔的两个正整数 x 和 y,表示机器人的起始位置(保证位于场地内)。 输出格式 输出到标准输出。 输出一个整数,表示 k 步内可以抵达的方格总数。 样例1输入

【Windows安装openclaw,配置qwen模型和ollama本地模型,飞书群组添加机器人】

【Windows安装openclaw,配置qwen模型和ollama本地模型,飞书群组添加机器人】

Windows11安装OpenClaw,配置千问Qwen模型及配置服务器本地模型Ollama,接入飞书机器人 * 第一步、安装Nodejs * 第二步、安装Git * 第三步、安装Openclaw * 配置本地大模型 * 第四步、配置飞书 第一步、安装Nodejs 1、减少后续各种报错情况,先安装Nodejs,下载地址:https://nodejs.org/zh-cn/download,选择对应操作系统,24版本太新,有些依赖不适配,本文选择22.22.0版本,node-v22.22.0-x64.msi 直接双击安装即可。 2、安装完成看一下版本信息,用管理员权限打开win的PowerShell 3、执行 node -v 第二步、安装Git 1、安装Git 访问地址 https://git-scm.com/install/

AirSim无人机仿真入门(一):实现无人机的起飞与降落

AirSim无人机仿真入门(一):实现无人机的起飞与降落

概述: 安装好所需要的软件和环境,通过python代码控制无人机进行起飞和降落。 参考资料: 1、知乎宁子安大佬的AirSim教程(文字教程,方便复制) 2、B站瑜瑾玉大佬的30天RL无人机仿真教程(视频教程,方便理解) 3、AirSim官方手册(资料很全,不过是纯英文的) AirSim无人机仿真入门(一):实现无人机的起飞与降落 * 1 安装AirSim * 1.1 参考教程 * 1.2 内容梳理 * 1.3 步骤总结 * 2 开始使用 AirSim * 2.1 参考教程 * 2.2 内容梳理 * 2.3 步骤总结 * 3 撰写python控制程序 * 3.1 参考教程 * 3.2 内容梳理

TWIST2——全身VR遥操控制:采集人形全身数据后,可训练视觉base的自主策略(基于视觉观测预测全身关节位置)

TWIST2——全身VR遥操控制:采集人形全身数据后,可训练视觉base的自主策略(基于视觉观测预测全身关节位置)

前言 我司内部在让机器人做一些行走-操作任务时,不可避免的需要全身遥操机器人采集一些任务数据,而对于全身摇操控制,目前看起来效果比较好的,并不多 * 之前有个CLONE(之前本博客内也解读过),但他们尚未完全开源 * 于此,便关注到了本文要解读的TWIST2,其核心创新是:无动捕下的全身控制 PS,如果你也在做loco-mani相关的工作,欢迎私我你的一两句简介,邀你加入『七月:人形loco-mani(行走-操作)』交流群 第一部分 TWIST2:可扩展、可移植且全面的人形数据采集系统 1.1 引言与相关工作 1.1.1 引言 如TWIST2原论文所说,现有的人形机器人远程操作系统主要分为三大类: 全身控制,直接跟踪人体姿态,包括手臂、躯干和腿部在内的所有关节以统一方式进行控制(如 HumanPlus [12],TWIST [1] ———— TWIST的介绍详见此文《TWIST——基于动捕的全身遥操模仿学习:教师策略RL训练,学生策略结合RL和BC联合优化(可训练搬箱子)》 部分全身控制,