AJAX总结

AJAX

1、什么是Ajax

ajax 全名 async javascript and XML(异步JavaScript和XML)

是一种用于创建快速动态网页的技术

是前后台交互的能⼒ 也就是我们客户端给服务端发送消息的⼯具,以及接受响应的⼯具

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

是⼀个 默认异步执⾏机制的功能,AJAX分为同步(async = false)和异步(async = true)

2、同步与异步的区别

什么是同步请求?(false)

同步请求是指当前发出请求后,浏览器什么都不能做, 必须得等到请求完成返回数据之后,才会执行后续的代码, 相当于生活中的排队,必须等待前一个人完成自己的事物,后一个人才能接着办。 也就是说,当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面处于一个假死状态, 当这个AJAX执行完毕后才会继续运行其他代码页面解除假死状态

什么是异步请求?(默认:true)

默认异步:异步请求就当发出请求的同时,浏览器可以继续做任何事, Ajax发送请求并不会影响页面的加载与用户的操作,相当于是在两条线上,各走各的,互不影响。 一般默认值为true,异步。异步请求可以完全不影响用户的体验效果, 无论请求的时间长或者短,用户都在专心的操作页面的其他内容,并不会有等待的感觉。

3.AJAX 的优势

  • 不需要插件的⽀持,原⽣ js 就可以使⽤

  • ⽤户体验好(不需要刷新⻚⾯就可以更新数据

  • 减轻服务端和带宽的负担

  • 缺点:搜索引擎的⽀持度不够,因为数据都不在⻚⾯上,搜索引擎搜索不到

4.实现AJAX的基本步骤

要完整实现一个AJAX异步调用和局部刷新,通常需要以下几个步骤:

  1. 创建XMLHttpRequest对象,即创建一个异步调用对象.

  2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

  3. 设置响应HTTP请求状态变化的函数.

  4. 发送HTTP请求.

  5. 获取异步调用返回的数据.

  6. 使用JavaScript和DOM实现局部刷新.

5.AJAX 的使用

在 js 中有内置的构造函数来创建 ajax 对象

创建 ajax 对象以后,我们就使⽤ ajax 对象的⽅法去发送请求和接受响应

Ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),这一特点主要得益于XMLHTTP组件XMLHTTPRequest对象。 

XMLHttpRequest 对象方法描述

1.创建⼀个 ajax 对象
 const xhr = new XMLHttpRequest()

上⾯就有了⼀个 ajax 对象 我们就可以使⽤这个 xhr 对象来发送 ajax 请求了

2.配置链接信息

XMLHttpRequest 对象属性描述(用于和服务器交换数据)

 const xhr = new XMLHttpRequest()
 // xhr 对象中的 open ⽅法是来配置请求信息的
 // 第⼀个参数是本次请求的请求⽅式 get / post / put / ...
 // 第⼆个参数是本次请求的 url 
 // 第三个参数是本次请求是否异步,默认 true 表示异步,false 表示同步
 // xhr.open('请求⽅式', '请求地址', 是否异步)
 xhr.open('get', './data.php')

上⾯的代码执⾏完毕以后,本次请求的基本配置信息就写完了

3.发送请求
 //如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
 const xhr = new XMLHttpRequest()
 xhr.open('get', './data.php')
 // 使⽤ xhr 对象中的 send ⽅法来发送请求
 xhr.send()

上面代码是把配置好信息的 ajax 对象发送到服务端

一个最基本的 ajax 请求就是上面三步 但是光有上面的三个步骤,我们确实能把请求发送到服务端 如果服务端正常的话,响应也能回到客户端 但是我们拿不到响应 如果想要拿到响应,我们需要有两个前提条件

  1. 本次 HTTP 请求是成功的,也就是我们下面要说的 http 状态码为 200 ~ 299

  2. ajax 对象也有自己的状态码,用来表示本次 ajax 请求中各个阶段

6.AJAX 状态码

  • ajax 状态码 - xhr.readyState

  • 是用来表示一个 ajax 请求的全部过程中的某一个状态

 readyState === 0 : 表示未初始化完成,也就是 open 方法还没有执行 
 readyState === 1 : 表示配置信息已经完成,也就是执行完 open 之后 
 readyState === 2 : 表示 send 方法已经执行完成
 readyState === 3 : 表示正在解析响应内容
 readyState === 4 : 表示响应内容已经解析完毕,可以在客户端使用了
  • 这个时候我们就会发现,当一个 ajax 请求的全部过程中,只有当 readyState === 4 的时候,我们才可以正常使用服务端给我们的数据

  • 所以,配合 http 状态码为 200 ~ 299

  一个 ajax 对象中有一个成员叫做 xhr.status
  这个成员就是记录本次请求的 http 状态码的 
  • 两个条件都满足的时候,才是本次请求正常完成

readyStateChange

在 ajax 对象中有一个事件,叫做 readyStateChange 事件 这个事件是专⻔用来监听 ajax 对象的 readyState 值改变的的行为 也就是说只要 readyState 的值发生变化了,那么就会触发该事件 所以我们就在这个事件中来监听 ajax 的 readyState 是不是到 4 了

   const xhr = new XMLHttpRequest() 
     xhr.open('get', './data.php')
     xhr.send()
     xhr.onreadyStateChange = function () {
     // 每次 readyState 改变的时候都会触发该事件
     // 我们就在这里判断 readyState 的值是不是到 4
     // 并且 http 的状态码是不是 200 ~ 299
     if (xhr.readyState === 4 && /^2\d{2|$/.test(xhr.status)) {
     // 这里表示验证通过
     // 我们就可以获取服务端给我们响应的内容了
     }
 }

使用 ajax 发送请求时携带参数

  • 我们使用 ajax 发送请求也是可以携带参数的

  • 参数就是和后台交互的时候给他的一些信息

  • 但是携带参数 get 和 post两个方式还是有区别的

GET 还是 POST?

  • 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。

  • 然而,在以下情况中,请使用 POST 请求:

  无法使用缓存文件(更新服务器上的文件或数据库)
  向服务器发送大量数据(POST 没有数据量限制)
  发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
  • 24
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现异步登录功能,可以使用 AJAX 技术来实现。下面是基本的实现步骤: 1. 编写前端页面,包含登录表单和提交按钮。 2. 编写 JavaScript 代码,监听提交按钮的点击事件,获取表单数据,并通过 AJAX 技术将数据发送到后端。 3. 后端接收到数据后,进行登录验证。如果验证成功,返回登录成功信息;否则返回失败信息。 4. 前端通过 AJAX 接收到后端返回的信息,并进行处理。如果登录成功,跳转到主页;否则给出提示信息,让用户重新输入。 下面是一个简单的示例代码: HTML 代码: ``` <form id="loginForm"> <label>用户名:</label> <input type="text" name="username"><br> <label>密码:</label> <input type="password" name="password"><br> <button type="submit">登录</button> </form> ``` JavaScript 代码: ``` $(function() { // 监听提交按钮的点击事件 $('#loginForm').submit(function(event) { // 阻止表单的默认提交行为 event.preventDefault(); // 获取表单数据 var formData = $(this).serialize(); // 发送 AJAX 请求 $.ajax({ url: 'login.php', type: 'post', data: formData, dataType: 'json', success: function(response) { // 处理后端返回的数据 if (response.success) { // 登录成功,跳转到主页 window.location.href = 'index.html'; } else { // 登录失败,给出提示信息 alert(response.message); } } }); }); }); ``` PHP 代码: ``` // 接收表单数据 $username = $_POST['username']; $password = $_POST['password']; // 进行登录验证 if ($username == 'admin' && $password == '123456') { // 登录成功,返回成功信息 echo json_encode(array('success' => true)); } else { // 登录失败,返回失败信息 echo json_encode(array('success' => false, 'message' => '用户名或密码错误')); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值