【JavaWeb-Ajax】笔记汇总 — 全局刷新和局部刷新;ajax 中使用 XMLHttpRequest 对象(四步);json 的使用

1、全局刷新和局部刷新:

1)全局刷新:整个浏览器被新的数据覆盖,在网络中传输大量的数据(浏览器需要加载,渲染页面)。

2)局部刷新:在浏览器的内部,发起请求,获取数据,改变页面中的部分内容,其余的页面无需加载和渲染(网络中数据传输量少, 给用户的感受好)。

ajax 是用来做局部刷新的,局部刷新使用的核心对象是【异步对象(XMLHttpRequest)】,这个异步对象存在浏览器内存中 ,使用 javascript 语法创建和使用。

2、Asynchronous JavaScript and XML:

ajax —> Asynchronous JavaScript and XML(异步的 JavaScript 和 XML):

  • xml 是网络中的一种传输的数据格式(json 替换了 xml)

1)ajax 是一种做局部刷新的新方法,不是一种语言,ajax包含的技术主要有 javascript ,dom , css , xml 等等(核心是 javascript 和 xml)。

2)javascript 负责创建异步对象, 发送请求, 更新页面的 dom 对象,ajax 请求需要服务器端的数据。

3、ajax 中使用 XMLHttpRequest 对象(四步):

1)创建异步对象(第一步):

var xmlHttp = new XMLHttpRequest();

2)给异步对象绑定事件(第二步):

xmlHttp.onreadystatechange //当异步对象发起请求,获取了数据都会触发这个事件,这个事件需要指定一个函数,在函数中处理状态的变化

如何获取服务器端返回的数据?

  • 使用异步对象的属性 responseText // xmlHttp . responseText

当请求的状态变化时,异步对象会自动调用 onreadystatechange 事件对应的函数(回调:当请求的状态变化时,异步对象会自动调用 onreadystatechange 事件对应的函数)

栗子:

xmlHttp.onreadystatechange= function(){
    //处理请求的状态变化
    if(xmlHttp.readyState == 4 && xmlHttp.status== 200 ){

        //可以处理服务器端的数据,更新当前页面
        var data = xmlHttp.responseText;
        document.getElementById("name").value= data;
    }
}

readyState(异步对象的属性) — 异步对象请求的状态变化:

  • 0:创建异步对象时 //new XMLHttpRequest ( ) ;
  • 1:初始异步请求对象 //xmlHttp.open ( ) ;
  • 2:发送请求 //xmlHttp.send ( ) ;
  • 3:从服务器端获取了数据,注意3是异步对象内部使用, 获取了原始的数据
  • 4:异步对象把接收的数据处理完成后,此时开发人员在4的时候处理数据(更新当前页面)

异步对象的 status 属性,表示网络请求的状况(200, 404, 500),当 status == 200 时,表示网络请求成功。

3)初始异步请求对象(第三步):

异步的方法:

  • open ( ) .xmlHttp . open ( get / post , “服务器端的访问地址” , true / false ) // true 为异步请求,false 为同步请求 ,默认为 true

  • 异步请求特点:

1)某一个时刻,浏览器可以委托多个异步请求对象发送请求,无需等待请求处理完成;

2)浏览器委托异步请求对象工作期间,浏览器处于活跃状态。可以继续向下执行其他命令;

3) 当响应就绪后再对响应结果进行处理 。

  • 同步请求特点:

1)某一个时刻,浏览器只能委托一个异步请求对象发送请求,必须等待请求处理完成;

2)浏览器委托异步请求对象工作期间,浏览器处于等待状态。不能执行其他命令;

3)不推荐使用。

栗子:

xmlHttp.open("get", "loginServlet?name=zs&pwd=123",true);

4)使用异步对象发送请求(第四步):

xmlHttp.send();

4、json使用:

ajax(发起请求)—> servlet —> 返回一个 json 格式的字符串(可以将 json 对象格式看作成一个 “key:value”格式) // { name:”河北”, jiancheng:”冀”,”shenghui”:”石家庄”}

json分类:

  • json对象 ,JSONObject
  • json数组, JSONArray // [ { name:”河北”, jiancheng:”冀”,”shenghui”:”石家庄”} , { name:”山西”, jiancheng:”晋”,”shenghui”:”太原” } ]

为什么要使用 json?

  • json 格式好理解
  • json 格式数据在多种语言中,比较容易处理。 使用 java, javascript 读写 json 格式的数据比较容易
  • json 格式数据它占用的空间小,在网络中传输快, 用户的体验好

处理 json 的工具库: gson(google); fastjson(阿里),jackson, json-lib

  • 在 js 中,可以把 json 格式的字符串,转为 json 对象, json 中的 key,就是 json 对象的属性名。

Original: https://www.cnblogs.com/Burning-youth/p/16047320.html
Author: 猿头猿脑的王狗蛋
Title: 【JavaWeb-Ajax】笔记汇总 — 全局刷新和局部刷新;ajax 中使用 XMLHttpRequest 对象(四步);json 的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/586418/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring Cloud中Hystrix仪表盘学习(笔记)

    先简单介绍一下Hystrix: Hystrix是由Netflflix开源的一个延迟和容错库,由于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。 H…

    Java 2023年6月5日
    087
  • Spring Cloud Gateway 路由定位器

    1 时刻与技术进步,每天一点滴,日久一大步!!! 本博客只为记录,用于学习,如有冒犯,请私信于我。 Original: https://www.cnblogs.com/myitne…

    Java 2023年5月30日
    060
  • 复试项目规划

    面试。采用综合性、开放性的能力型试题,试题由考生随机抽取,面试时间为每位考生25分钟左右。主要内容为三部分: ①外语听力、口语测试,测试时间为每位考生5分钟左右,满分100分,60…

    Java 2023年6月5日
    055
  • JavaCV的摄像头实战之三:保存为mp4文件

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《JavaCV的摄…

    Java 2023年6月8日
    090
  • JAVA正则表达式:Pattern类与Matcher类详解(转)

    以下我们就分别来看看这两个类: 一、捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的。例如,在表达式 ((A)(B(C)))中,存在四个这样的组: 组零始…

    Java 2023年5月29日
    064
  • 从零开始实现lmax-Disruptor队列(五)Disruptor DSL风格API原理解析

    在v4版本的MyDisruptor实现多线程生产者后。按照计划,v5版本的MyDisruptor需要支持更便于用户使用的DSL风格的API。 由于该文属于系列博客的一部分,需要先对…

    Java 2023年6月8日
    058
  • Java SE 代码块

    1、代码块 基本语法 [修饰符]{ 代码 }; 修饰符 可选,要写的话,也只能写 static 代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的,叫普通代…

    Java 2023年6月7日
    085
  • Java EE发展史

    参阅公众号 BAT的乌托邦-Java EE 专栏 posted @2021-07-26 16:06 March On 阅读(105 ) 评论() 编辑 top last Welco…

    Java 2023年5月29日
    076
  • 并发基础篇(六):线程Thread类的start()方法和run()方法

    https://blog.csdn.net/sihai12345/category_7623860.html 一、初识java的线程是通过java.lang.Thread类来实现的…

    Java 2023年5月30日
    072
  • MySQL的undo日志—MVCC前置知识

    undo日志 前面学习了redo日志,redo日志保证的是崩溃时事务持久性。我们可以从redo日志恢复到系统崩溃以前。 undo日志就是为了保证事务回滚时事务所作所为都能回到事务执…

    Java 2023年6月16日
    076
  • 求助! 关于javamial 获取邮件正文文本

    一个带有附件的邮件message的 (Multipart) message.getContent() Multipart的 getCotentType第一级为 1个part:类型:…

    Java 2023年6月5日
    066
  • Java_GUI

    Java_GUI 1.GUI概述 图形用户界面( Graphical User Interface,简称 GUI,又称 图形用户接口)是指采用图形方式显示的计算机操作用户界面。 […

    Java 2023年6月9日
    098
  • AUSTOj3

    include int i, j, k;i = 0; j = 0; k = 0;while (i < La.ength && j < Lb.length…

    Java 2023年6月15日
    070
  • java selenium (十) 操作浏览器

    本篇文章介绍selenium 操作浏览器 操作cookie Original: https://www.cnblogs.com/TankXiao/p/5260557.htmlAut…

    Java 2023年5月29日
    0109
  • Java中循环体 标记的用法

    break 的作用 循环结构中使用break,直接结束当前循环体,跳出当前循环。 用于switch或者是循环语句中。 单用break 只跳出当前循环,如果使用标记,可以跳出其他外层…

    Java 2023年6月8日
    073
  • springboot mybatis plus多数据源轻松搞定(下)

    在 springboot mybatis plus多数据源轻松搞定 (上) 中我们使用了分包的方式实现了一个springboot项目中多个数据源的调用。也对指出了最大的缺点就是不能…

    Java 2023年6月7日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球