JS手写代码篇---手写ajax

14、实现ajax请求

通过 JavaScript 的 异步通信,从服务器获取 XML 文档从中提取数据,再更新当前网页的对应部分,而不用刷新整个网页。

步骤:

  • 创建一个 XMLHttpRequest 对象。
  • 设置超时时间。
  • 定义成功和失败的回调函数。
  • 监听请求状态变化,并在请求完成时检查 HTTP 状态码,调用相应的回调函数。
  • 处理网络错误和超时错误。
  • 打开请求,设置请求头和响应类型,并发送请求。

代码:

复制代码
const SERVER_URL = "test.json"
// 创建请求
const xhr = new XMLHttpRequest();
// 设置超时时间
const timeout = 1000;
// 成功的回调函数
function onSuccess(res){
  console.log("Success:" ,  res)
}
// 失败的回调函数
function onError(res){
  console.log("Error:" , res)
}

// 监听状态:包括ajax的和http的
xhr.onreadystatechange = () => {
  if (xhr.readyState !== 4) return;
  if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
   onSuccess(xhr.response);
  }else {
    onError(xhr.response)
  }
};
// 错误的情况
xhr.onerror = function() {
 onError("错啦"+xhr.response);
};2
// 超时的情况
xhr.ontimeout = function(){
  onError("超时啦"+xhr.response);
}
// 先open
xhr.open("GET", SERVER_URL, true);
// 设置请求头
xhr.setRequestHeader("Accept", "application/json");
// 设置请求类型
xhr.responseType = "json";
// 发送请求
xhr.send(null);
`
相关推荐
shilei_c2 分钟前
qt qDebug无输出问题解决
开发语言·c++·算法
pop_xiaoli4 分钟前
effective-Objective-C 第一章阅读笔记
开发语言·笔记·ios·objective-c·cocoa·xcode
jghhh014 分钟前
基于C#的CAN总线BMS上位机开发方案
开发语言·c#
serve the people5 分钟前
python环境搭建 (七) pytest、pytest-asyncio、pytest-cov 试生态的核心组合
开发语言·python·pytest
java1234_小锋7 分钟前
分享一套不错的基于Python的Django宠物信息管理系统
开发语言·python·宠物
一切尽在,你来9 分钟前
C++ 零基础教程 - 第4讲-实现简单计算器
开发语言·c++
女王大人万岁16 分钟前
Go语言JSON标准库(encoding/json):功能解析与实战指南
服务器·开发语言·后端·golang·json
摘星编程18 分钟前
OpenHarmony环境下React Native:Loading全屏加载遮罩
javascript·react native·react.js
wjs202418 分钟前
Scala 基础语法
开发语言
.ZGR.20 分钟前
从游戏到实战的线程进阶之旅:智能无人机防空平台
java·开发语言·无人机