Ajax 技术详解

Ajax 技术详解

一、Ajax 基础概念

Ajax (Asynchronous JavaScript and XML) 是一种用于创建快速动态网页的技术。它主要作用包括:

  1. 数据交换:在后台与服务器交换少量数据
  2. 异步通信:不刷新整个页面的情况下更新部分网页内容

典型应用场景:

  • 表单验证(实时检查用户名是否可用)
  • 搜索建议(输入时自动补全)
  • 分页加载(滚动到底部自动加载更多内容)
  • 实时数据更新(股票行情、聊天消息)

二、Axios 封装库

Axios 是一个基于 Promise 的 HTTP 客户端,对原生 Ajax 进行了封装,主要优势:

  1. 简化书写:提供更简洁的 API
  2. 功能增强
    • 自动转换 JSON 数据
    • 客户端支持防御 XSRF
    • 支持请求和响应拦截
    • 取消请求功能

三、Axios 详细语法

基本请求语法

javascript 复制代码
axios({
  method: '请求方法',  // GET/POST/PUT/DELETE 等
  url: '请求路径',     // 接口地址
  // 其他配置项...
})
.then(function (response) {
  // 处理成功响应
})
.catch(function (error) {
  // 处理错误
});

配置项详解

  1. method:HTTP 请求方法

    • GET:获取数据(默认值)
    • POST:提交数据
    • PUT:更新数据
    • DELETE:删除数据
  2. url:请求的资源路径

    • 绝对路径:https://api.example.com/users
    • 相对路径:/api/users(需设置 baseURL)
  3. data:请求体数据(POST/PUT/PATCH 使用)

    javascript 复制代码
    data: {
      firstName: '张',
      lastName: '三'
    }
  4. params:URL 查询参数(GET 使用)

    javascript 复制代码
    params: {
      ID: 12345,
      type: 'vip'
    }
    // 实际请求URL为:/api/user?ID=12345&type=vip

响应处理

  1. 成功回调(.then)

    javascript 复制代码
    .then(function (result) {
      console.log(result.data);  // 服务器返回的数据
      console.log(result.status); // HTTP 状态码
      console.log(result.headers); // 响应头信息
    })
  2. 失败回调(.catch)

    javascript 复制代码
    .catch(function (error) {
      if (error.response) {
        // 服务器返回了错误状态码
        console.log(error.response.status);
        console.log(error.response.data);
      } else if (error.request) {
        // 请求已发出但无响应
        console.log('请求超时');
      } else {
        // 其他错误
        console.log(error.message);
      }
    })

四、快捷方法

Axios 提供了常用 HTTP 方法的快捷方式:

javascript 复制代码
// GET 请求
axios.get('/user', {
  params: {
    ID: 12345
  }
})

// POST 请求
axios.post('/user', {
  firstName: '张',
  lastName: '三'
})

// 并发请求
axios.all([
  axios.get('/user/123'),
  axios.get('/user/123/permissions')
])
相关推荐
EndingCoder8 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
用户47949283569158 小时前
React 终于出手了:彻底终结 useEffect 的"闭包陷阱"
前端·javascript·react.js
程序员猫哥8 小时前
前端开发,一句话生成网站
前端
Younglina9 小时前
一个纯前端的网站集合管理工具
前端·vue.js·chrome
木头程序员9 小时前
前端(包含HTML/JavaScript/DOM/BOM/jQuery)基础-暴力复习篇
开发语言·前端·javascript·ecmascript·es6·jquery·html5
卖火箭的小男孩9 小时前
# Flutter Provider 状态管理完全指南
前端
小雨青年9 小时前
鸿蒙 HarmonyOS 6|ArkUI(01):从框架认知到项目骨架
前端
Null1559 小时前
浏览器唤起本地桌面应用(基础版)
前端·浏览器
pas1369 小时前
31-mini-vue 更新element的children
前端·javascript·vue.js
wordbaby9 小时前
TanStack Router 实战:如何构建经典的“左侧菜单 + 右侧内容”后台布局
前端·react.js