首页 > 编程语言 >JavaScript初学必备 之 初识ajax

JavaScript初学必备 之 初识ajax

时间:2024-09-29 16:47:31浏览次数:3  
标签:readyState 请求 JavaScript xhr ajax 初识 new open

今日推荐歌曲:

遇见

一、ajax介绍

1、学习前提

需要有以下基础:

  • HTML和CSS基础
  • JavaScript基础

2、什么是ajax?

(1)、全称

ajax === async Javascript and xml(ajax === 异步 JavaScript 和 XML),ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

  • async : 异步
  • xml :闭合标签
  • 但xml对JS的解析不友好,反而JSON数据格式处理很友好

(2)、特点

  • ajax 不是新的编程语言,而是一种使用现有标准的新方法。
  • ajax 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
  • ajax 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。
  • XMLHttpRequest 只是实现 ajax 的一种方式。

(3)、优缺

优点:

  • 不需要任何浏览器插件,原生JS就可以使用
  • 用户体验好,不需要刷新页面就可以更新数据
  • 减轻服务端和带宽的负担

缺点:

  • 搜索引擎的支持度不够,因为数据都不在页面上,搜索引擎搜索不到

(4)、原理

ajax 相当于浏览器发送请求与接收响应的代理人,以实现在不影响用户浏览页面的情况下,局部更新页面数据,从而提高用户体验,原理如图:

二、ajax实现

tips:

  • 在JS中有内置的构造函数来创建 ajax 对象
  • 创建 ajax 对象后,我们就使用 ajax 对象的方法去发送请求和接收响应

1、步骤

(1)、创建 ajax对象 XHR

var xhr = new XMLHttpRequest() //new 一个对象

(2)、配置open()

向 ajax 说明请求方式以及请求地址,默认异步

xhr.open(请求方式,请求地址,是否异步)  //默认异步

(3)、发送请求

xhr.send()

(4)、接收数据

获取服务器端给客户端的响应数据

xhr.onload = function() {
    // xhr.responseText 接收文本格式的响应数据
    // xhr.responseXML 接收 xml 格式的响应数据
    console.log(xhr.responseText);
}

2、完整流程

现模拟从后端接收一个文本文件1.txt:

    //1、创建XHR new XMLHttpRequest  (new一个对象)
    var xhr = new XMLHttpRequest()
 
    //2、配置 open(请求方式,请求地址,是否异步)
    xhr.open("GET","http://localhost:63342/....../1.txt")

    //3、发送出去
    xhr.send()

    //4、接收数据,注册一个事件
    xhr.onload = function() {
        console.log(xhr.responseText);
    }

3、ajax状态码

1、解释

ajax 状态码——xhr.readyState,用来表示一个 ajax 请求的全部过程中的某一个状态。

xhr.readyState

2、过程

  • readyState === 0:表示未初始化完成,也就是open方法还没有执行
  • readyState === 1:表示配置信息已经完成,也就是执行完open以后
  • readyState === 2:表示send方法已经执行完成
  • readyState === 3:表示正在解析响应内容
  • readyState === 4:表示响应内容已经解析完毕,可以在客户端使用了

3、要点

这时发现,在一个 ajax 请求的全部过程中,只有当 readyState === 4 的时候,才可以正常使用服务端给我们的数据。

当AJAX请求完成时,通常会返回一个HTTP响应,包括状态码。常见的AJAX状态码有:

  1. 200(OK):表示请求成功并返回了预期的数据。
  2. 400(Bad Request):请求有语法错误,服务器无法理解。
  3. 404(Not Found):请求的资源未找到,通常是URL无效。
  4. 500(Internal Server Error):服务器内部错误,可能是服务器端代码问题。
  5. 200 OK with JSON:虽然状态码也是200,但服务器返回的是JSON而非纯文本,这是AJAX成功获取到数据的一种常见形式。

开发者通常会检查状态码来判断请求是否成功,并根据具体情况处理不同的状态。

4、readyStateChange事件

1、解释

在 ajax 中有一个事件,叫做readyStateChange事件,该事件专门用来监听 ajax 对象的 readyState 值改变的行为,也就是说,这个值一改变就会触发该事件,所以通过这个事件来监听 ajax 的 readyState 是不是到4了。

2、例子

    var xhr = new XMLHttpRequest()
    console.log(xhr)

    xhr.open("GET","http://localhost:63342/.../1.txt")

    xhr.send()

    xhr.onreadystatechange = function (){
        //每次 readyState 改变的时候就会触发该事件
        //我们就在这里判断 readyState 的值是不是到4
        //并且 http 的状态码是不是 200~299


        if (xhr.readyState === 4 && xhr.status === 200){ //如果连接正确等于200,反之等于404
            console.log("数据解析完成",xhr.responseText)//状态4的时候才能拿到数据
        }else if (xhr.readyState ===4 && xhr.status ===404){ //如果连接错误
            console.error("没找到这个页面")
            location.href = "404.html" //跳转到404.html这个页面
        }

标签:readyState,请求,JavaScript,xhr,ajax,初识,new,open
From: https://blog.csdn.net/tic_tac_toe/article/details/142631144

相关文章

  • css伪类元素初识
    昨天想写一个登陆网站,但是怎么都实现不了图片里+表单,搜索发现需要css的伪类元素帮助,特意学习常见的伪类元素在CSS中,:before和:after是伪元素,它们可以用于在指定元素的内容之前或之后插入内容。这两个伪元素非常强大,常用于装饰性元素或者清除浮动等。关于:before和:after的一......
  • 【漏洞复现】孚盟云oa AjaxSendDingdingMessage接口 存在sql注入漏洞
    》》》产品描述《《《        孚盟与阿里强强联手将最受青睐的经典C系列产品打造成全新的孚盟云产品,让用户可以用云模式实现信息化管理,让用户的异地办公更加流畅,大大降低中小企业在信息化上成本,用最小的投入享受大型企业级别的信息化服务,使中小企业在网络硬件环境、......
  • JavaScript深拷贝与浅拷贝
    由于对象采用的是引用赋值。所以直接用“=”,修改属性的时候也会将原来的变量改变掉。因此,就有了浅拷贝与深拷贝用{...obj}和object.assign表示浅拷贝,其只拷贝外围对象的一层,而不会拷贝多层。 方法二:使用Object.assign  深拷贝的实现其一是通过递归实现拷贝。其二lod......
  • JavaScript 条件循环语句
    ‌条件循环语句‌是编程中的一种控制结构,它允许程序根据特定条件重复执行一段代码,直到满足某个条件为止。这种结构通常包括条件语句和循环语句,它们共同作用,使得程序能够根据预设的条件来决定是否继续执行循环体中的代码。for循环:适用场景:当知道循环次数时(循环次数已知)。特......
  • javascript 数组对象解构
    传统的写法不好记忆,书写麻烦,此时可以使用结构赋值的方法让代码更加简洁。数组结构是将数组中的单元值快速批量赋值给一系列变量的简介语法。变量的顺序对应数组单元值位置一次进行赋值操作。如下:应用一:交换两个变量Js前面有那种情况需要加分号。(不加分号解析器认为和上......
  • 【C++篇】迈入新世界的大门——初识C++(下篇)
    文章目录   前言   引用        引用的概念和定义        引用的特性        引用的使用        const引用        指针和引用的关系  inline         ......
  • Javascript编译原理
    JavaScript的编译原理是一个复杂但有序的过程,主要涉及分词(词法分析)、解析(语法分析)、代码生成以及执行等阶段。以下是对JavaScript编译原理的详细解析:chrome编译流程 1.分词(词法分析)分词(Tokenizing)或词法分析(Lexing)是编译过程的第一步。在这个阶段,编译器将输入的源代码......
  • Javascript 一题搞懂 var 变量提升 & 函数声明提升!
    前置知识:在JavaScript中,“变量提升”(Hoisting)是指在代码执行之前,变量和函数声明会被提升到其所在作用域的顶部。对于使用var关键字声明的变量,会发生变量提升现象。一、声明提升1.变量声明提升:无论var变量在代码中的何处声明,它都会被提升到其所在的函数作用域......
  • 事件【JavaScript】
    1.事件事件是用户或浏览器动作的表示,JavaScript中的一切交互都是通过事件来处理的。2. 事件冒泡(EventBubbling)事件冒泡是指事件从最具体的元素(即触发事件的元素)开始触发,然后逐级向上传播到较为不具体的元素(即该元素的父元素、祖先元素),直到到达最顶层的元素(通常是documen......
  • JavaScript 网页设计案例详解( 最新技术趋势)
    前言随着JavaScript生态系统的不断发展和浏览器支持的不断完善,2024年的前端开发技术已经变得更加现代化和高效。JavaScript在网页设计中的应用不再局限于基础的交互,它与最新的Web标准、API结合,为开发者带来了丰富的功能和出色的性能优化。本文将通过一个网页设计案例,结......