搞懂 AJAX:写给前端新手的实用教程

浅聊一下

一个项目包括前端和后端,每个部分都得完成相应的工作,那么当前后端工作完成以后,我们又是怎样把前后端联合在一起的呢,这就不得不提到AJAX...

什么是AJAX

AJAX名字听起来很是神秘,听起来就像是英雄联盟里贾克斯的同胞,那么他到底是个什么玩意?

AJAX(Asynchronous JavaScript and XML)是一种用于在网页上进行异步通信的技术。通过AJAX,网页可以在不刷新整个页面的情况下,与服务器进行数据交换和更新部分内容。AJAX使用JavaScript和XML(现在也可以使用JSON)来实现数据的异步传输。它通过在后台与服务器进行少量数据交换,实现网页的动态更新。这使得用户能够在不中断当前页面的情况下,获取最新的数据和信息。

简单地说AJAX就是我们从后端获取数据的一种手段,那他的优点是什么呢?

优点:

  1. 提高用户体验:页面无需刷新,用户不会看到明显的延迟或闪烁。
  2. 减轻服务器负载:只有需要更新的部分数据才会被请求和返回,减少了不必要的数据传输。
  3. 提高页面性能:由于不需要刷新整个页面,加载时间更快,响应更迅速。

使用AJAX

  1. 使用XMLHttpRequest
js 复制代码
 const btn = document.getElementById('btn');
        btn.addEventListener('click',()=>{
            //朝网易云服务器上的后端代码发一个http请求
            let xhr = new XMLHttpRequest();
            xhr.open('GET','https://api.github.com/users/shunwuyu/repos',true);
            //用来监听后端的代码有没有返回
            xhr.onreadystatechange = ()=>{
                if(xhr.readyState === 4 && xhr.status === 200){
                    let result = JSON.parse(xhr.responseText);
                    console.log(result);
                }
            }
            xhr.send();
        })

这里,我们设置了一个按钮,点击按钮,就会从后端接口获取数据

let xhr = new XMLHttpRequest();:创建一个 XMLHttpRequest 对象,用于处理 HTTP 请求和响应。

xhr.open('GET', 'https://api.github.com/users/shunwuyu/repos', true);:配置 XMLHttpRequest 请求。这里是一个 GET 请求,目标 URL 是 GitHub 的 API,用于获取用户 "shunwuyu" 的所有仓库信息。最后一个参数是指定请求是否异步执行。

xhr.onreadystatechange = () => { ... }:定义一个回调函数,该函数在 xhr 对象的状态发生变化时被调用。在这里,检查状态是否为 4(即请求完成),并检查响应的状态码是否为 200(即成功)

JSON.parse(xhr.responseText):将服务器返回的 JSON 字符串解析为 JavaScript 对象。

我们来普及一下xhr.readStyle的四种状态:

0 -- xhr刚刚创建,请求还没发送

1 -- open准备完成

2 -- 请求已经发送,客户端接收到了响应头

3 -- 接收到服务端返回的响应体,正在解析

4 -- 解析完成

当我们点击按钮以后就会获取到数据

  1. 使用jQuery
js 复制代码
 const btn = document.getElementById('btn');
        btn.addEventListener('click',()=>{
            //朝网易云服务器上的后端代码发一个http请求
           $.ajax({
            url:'http://192.168.31.45:3000/top/song?type=7',
            method:'GET',
            dataType:'json',
            success:function(data){
                console.log(data);
            }
           })
        })

$.ajax({ ... }):使用 jQuery 提供的 $.ajax 方法发起 AJAX 请求。该方法接受一个包含各种配置选项的对象,用于指定请求的详细信息。

  • url: 'http://192.168.31.45:3000/top/song?type=7':指定请求的目标 URL。
  • method: 'GET':指定请求的 HTTP 方法为 GET。
  • dataType: 'json':指定预期的响应数据类型为 JSON。这告诉 jQuery 在成功时将响应数据解析为 JSON 对象。
  • success: function(data) { console.log(data); }:指定请求成功时的回调函数。在这里,成功时将返回的数据打印到控制台。

需要注意的是,要使用$ajax(),就要先导入jQuery

js 复制代码
 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

来看结果:

  1. 使用fetch

fetch是相较于前两者更为优雅的方法,这简洁程度根本没得说...

js 复制代码
 const btn = document.getElementById('btn');
        btn.addEventListener('click',()=>{         
          fetch('https://api.github.com/users/shunwuyu/repos')
          .then(data =>data.json())
          .then(res =>{
            console.log(res);
          })
        })

这里我们使用到了异步的方法,不懂异步的掘友们可以去看我之前的一篇文章

(Promise:解决JavaScript异步编程难题 - 掘金 (juejin.cn))

结果和前两者一样,我就不过多展示了...

结尾

Ajax的使用还是较为简单,我相信对于神通广大的掘友们来说不过是撒撒水啦~~

相关推荐
合作小小程序员小小店12 小时前
web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
java·前端·vue.js·后端·intellij-idea·springboot
防火墙在线13 小时前
前后端通信加解密(Web Crypto API )
前端·vue.js·网络协议·node.js·express
Jacky-00813 小时前
Node + vite + React 创建项目
前端·react.js·前端框架
CoderYanger13 小时前
前端基础——CSS练习项目:百度热榜实现
开发语言·前端·css·百度·html·1024程序员节
i_am_a_div_日积月累_14 小时前
10个css更新
前端·css
她是太阳,好耀眼i14 小时前
Nvm 实现vue版本切换
javascript·vue.js·ecmascript
蒲公英100114 小时前
在wps软件的word中使用js宏命令设置表格背景色
javascript·word·wps
倚栏听风雨14 小时前
npm命令详解
前端
用户479492835691514 小时前
为什么我的react项目启动后,dom上的类名里没有代码位置信息
前端·react.js
键盘飞行员14 小时前
Vue3+TypeScript项目中配置自动导入功能,遇到了问题需要详细的配置教程!
前端·typescript·vue