Ajax初探
Ajax
Ajax概述
- 中文音译:阿贾克斯
- 它是游览器提供的一套方法,可以实现页面无刷新更新数据,提高用户游览网站应用的体验
Ajax运行原理
- Ajax相当于游览器发送请求与接受相应的代理人,以实现在不影响用户游览页面的情况下,局部更新页面数据,从而提高用户体验
Ajax的实现步骤
- 创建
Ajax
对象
var xhr = new XMLHttpRequest()
- 告诉
Ajax
请求地址以及请求方式
url = '本地端口号'+'路由'
url = 'http://localhost:5600/first'
xhr.open('get', url)
- 发送请求
xhr.send()
- 获取服务端给与客户端的相应数据
xhr.onload = function() {
console.log(xhr.responseText)
}
- 当
Ajax
接受了服务器的响应之后会触发onload
事件 xhr.responseText
保存的是服务器端给客户端返回的数据
Ajax的运行环境
-
Ajax
技术需要运行在网站环境中才能生效- 我使用的是Node创建的服务器作为网站服务器
-
安装
express
指令npm install express --save
-
终端执行命令
node + 文件名
-
在根目录创建了个
app.js
文件夹
// 引入express框架
const express = require('express')
//路径处理模块
const path = require('path')
//创建web服务器
const app = express()
//静态资源访问服务功能
app.use(express.static(path.join(__dirname, 'public')))
//所有public文件夹静态文件可以被访问,将html文件放入public文件夹
app.get('/first', (req, res) => {
res.send('Hello Ajax')
})
// /first 第一个参数时路由
//req:请求数据 //res:响应数据
//监听端口
app.listen(5500)//事件监听
// 控制台提示输出
console.log('服务器启动成功')
- 然后再node环境下终端执行命令
node + 文件名
服务端相应的数据格式
- 服务器端大多情况下会以
JSON
对象作为相应数据的格式
app.get('/first', (req, res) => {
res.send({'Hello':'Ajax'})
})
- 客户端拿到响应数据时,要将
JSON
数据和HTML
字符串进行拼接,然后将拼接的结果展示在页面中 - 在
http
请求与响应的过程中,无论是请求还是响应内容,如果是对象类型,最终都会被转换为对象字符串进行输出JSON.parse
将JSON
字符串转换成JSON
对象
xhr.onload = function() {
console.log(xhr.responseText)
console.log(JSON.parse(xhr.responseText))
var responseText = JSON.parse(xhr.responseText)
var str = '<p>' + responseText.name + '</p>'
document.write(str)
}
请求参数的传递
get 请求方式
xhr.open('get', 'http://www.example.com?name=lazy&age=18')
get
请求参数格式:参数名称等于参数值get
请求多个参数用&
符号连接get
请求参数放在请求地址后面,并且用?
符号分割get
请求是不能提交json
对象数据格式的
post 请求方式
xhr.setRequestHeader('Content-Type', 'application/x-www-from-yrlencoded')
xhr.send('name=lazy&age=18')
post
请求不放在地址栏后面,而是放在请求体当中(把请求方式放在send
里)post
请求必须在请求报文中明确设置请求参数内容的类型()xhr.setRequestHeader('Content-Type', 'application/x-www-from-yrlencoded')
Content-Type
报文属性名称application/x-www-from-yrlencoded
键值对类型值
请求参数的格式
-
application/x-www-from-yrlencoded
name=lazy&age=18
-
application/json
告诉服务端当前请求参数的格式是json
{name: 'lazy', age: 18}
get
请求是不能提交json
对象数据格式的- 传统网站的表单提交也是不支持
json
对象数据格式的
-
参数必须以字符串形式进行传递
JSON.stringify()
将json
对象转换成json
字符串
获取服务端的响应
Ajax 状态码
-
在创建
ajax
对象,配置ajax
对象,发送请求,以及接受完服务器响应数据,这个过程中的每一个步骤都会对应一个数值- 0 请求未初始化(还没有调用
open()
) - 1 请求已经建立,但是还没有发送(还没有调用
send()
) - 2 请求已经发送
- 3 请求正在处理中,通常响应中已经有部分数据可以用了
- 4 响应已经完成,可以获取并使用服务端的响应
- 0 请求未初始化(还没有调用
-
获取
Ajax
状态码的方法xhr.readyState
-
当
Ajax
状态码发送变化的时候触发的方法xhr.onreadystatechange
var xhr = new XMLHttpRequest()
console.log(xhr.readyState)//0
var url = 'http://localhost:5500/first'
xhr.open('get', url)
console.log(xhr.readyState)//1
xhr.onreadystatechange = function() {
console.log(xhr.readyState)//2,3,4
}
xhr.
xhr.send()
xhr.onload = function() {}
Ajax 错误处理
-
网络通畅,服务器端能接受到请求,服务端返回的结果不是预期结果
- 可以判断服务器端返回的状态码,分别进行处理
xhr.status
可以获取http
状态码
-
网络通畅,服务器端没有收到请求,返回404状态码
- 检查请求地址是否发送错误
-
网络通畅,服务端能接收到请求,返回500状态码
- 服务器端错误
-
网络中断,请求无法发送到服务器端
- 会触发
xhr
对象下面的onerror
事件,在onerror
事件处理函数中对错误进行处理
- 会触发
本文来自博客园,作者:懒惰ing,转载请注明原文链接:https://www.cnblogs.com/landuo629/p/12626725.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?