JavaScript的原生ajax

本文详细介绍了Ajax技术的概念,包括其核心组件XMLHttpRequest的工作原理,以及如何通过GET和POST请求与服务器进行异步通信。同时,文章探讨了Ajax的优缺点,如改善用户体验和减轻服务器压力等优势,以及可能破坏浏览器回退机制和对搜索引擎支持较弱等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AJAX

一、什么是Ajax

Ajax(Asynchronous JavaScript And XML)异步 JavaScript 和 XML,是只刷新局部页面的技术。
XML:一般用于请求数据和相应数据的封装
现在的ajax技术已经开始使用JSON字符串进行数据交互

二、Ajax的优缺点

优点

  1. 页面无刷新,用户体验好
  2. 使用异步的方式与服务器通信,响应更加迅速
  3. 减轻服务器的压力,节约带宽
  4. 基于标准化并被广泛支持的技术

缺点

  1. 破坏了浏览器的回退机制
  2. 暴露了更多的数据和服务器逻辑
  3. 对搜索引擎的支持比较弱
  4. 违背了 URL 与资源定位的初衷

三、XMLHttpRequest 对象

XMLHttpRequest对象:发送请求到服务器并获得返回结果,是ajax技术的核心

XMLHttpRequest 对象可以让我们使用 JavaScript 向服务器发起请求并处理响应,而不阻塞用户。 通过 XMLHttpRequest 对象,Web 开发人员可以在页面加载后对页面进行局部更新。该对象是一种支持异步请求的技术。

四、Ajax实现的流程

  1. 创建一个 XMLHttpRequest 对象
  2. 创建一个新的 HTTP 请求,并指定该请求的方法、URL 以及是否为异步请求
  3. 设置响应 HTTP 请求状态变化的函数
  4. 发送 HTTP 请求
  5. 对异步返回的数据进行处理
// 创建 XMLHttpRequest 对象
var xhr
if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest()
} else if (window.ActiveXObject) {
    xhr = new ActiveXObject('Microsoft.XMLHTTP')
}
// 创建一个新的请求
xhr.open('GET', 'http://www.example.com', true)
// 设置请求头
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
// 监听 HTTP 请求状态变化
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var res = xhr.responseText
    }
}
// 发送 HTTP 请求
xhr.send()

五、POST请求设置

发送方式为post时,需要手动设置消息头

//发送json格式
xhr.setRequestHeader("Content-type","application/json;charset = utf-8");
//发送表单数据格式
xhr.setRequestHeader("Content-type","application/x-www-form-urlencode;charset = utf-8");
//发送纯文本格式
xhr.setRequestHeader("Content-type","text/plain;charset = utf-8"); //默认值
//发送html文本设置
xhr.setRequestHeader("Content-type","text/html;charset = utf-8");

六、就绪状态码和HTTP状态码

就绪状态码

  • 0            没有完成初始化
  • 1            开始发送请求
  • 2            请求发送完成
  • 3            开始读取响应,还没有结束
  • 4            读取响应结束

HTTP状态码

  • 200            服务器响应正常
  • 304            缓存
  • 400            无法找到请求的资源
  • 403            没有访问权限
  • 404            访问的资源不存在
  • 500            服务器内部错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值