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);
`
相关推荐
逻辑驱动的ken2 分钟前
Java高频面试考点场景题20
java·开发语言·深度学习·面试·职场和发展
W.A委员会3 分钟前
多行溢出在末尾添加省略号
开发语言·javascript·css
wjs20245 分钟前
RSS Item 元素:深入解析与使用指南
开发语言
小郑加油8 分钟前
python学习Day11:认识与创建CSV文件
开发语言·python·学习
念何架构之路31 分钟前
Go Web基础和Http演进
开发语言·后端·golang
初心未改HD37 分钟前
Go语言database/sql与SQLx:构建健壮的数据访问层
开发语言·golang
晚风吹红霞39 分钟前
C++异常处理核心知识点全解析
开发语言·c++
CoderCodingNo40 分钟前
【信奥业余科普】C++ 的奇妙之旅 | 17:面的铺展与文本的本质——二维数组与字符串
开发语言·c++
J2虾虾41 分钟前
Java Lambda 表达式详解文档
java·开发语言
csbysj20201 小时前
CSS 网格元素
开发语言