Ajax简介

1.1 全局刷新和局部刷新
          B/S 结构项目中, 浏览器( Browse )负责把用户的请求和参数通过网络发送给服务器 Server , 服务端使用 Servlet (多种服务端技术的一种)接收请求,并将处理结果返回给浏
览器。
         浏览器在 html jsp 上呈现数据,混合使用 css js 帮助美化页面,或响应事件。
1.1.1 全局刷新
登录请求处理:
index.jsp 发起登录请求 --------LoginServlet--------result.jsp
发起请求 request 阶段:
浏览器现在内存中是 index 页面的内容和数据 :

服务器端应答结果阶段:

          sevlet 返回后把数据全部覆盖掉原来 index 页面内容, result.jsp 覆盖了全部的浏览器 内存数据。 整个浏览器数据全部被刷新。重新在浏览器窗口显示数据,样式,标签等

 

全局刷新原理:

1) 必须由浏览器亲自向服务端发送请求协议包。
2) 这个行为导致服务端直接将【响应包】发送到浏览器内存中
3) 这个行为导致浏览器内存中原有内容被覆盖掉
4) 这个行为导致浏览器在展示数据时候,只有响应数据可以展示
1.1.2 局部刷新
       浏览器在展示数据时,此时在窗口既可以看到本次的响应数据, 同时又可以看到浏览 器内存中原有数据
局部刷新原理:
1) 不能由浏览器发送请求给服务端
2) 浏览器委托浏览器内存中一个脚本对象代替浏览器发送请求 .
3) 这个行为导致导致服务端直接将【响应包】发送脚本对象内存中
4) 这个行为导致脚本对象内容被覆盖掉,但是此时浏览器内存中绝大部分内容没有收
到任何影响 .
5) 这个行为导致浏览器在展示数据时候 , 同时展示原有数据和响应数据

 

 AJAX 实现局部刷新的一种技术。

1.2 异步请求对象 :
        在局部刷新,需要创建一个对象,代替浏览器发起请求的行为,这个对象存在内存中。 代替浏览器发起请求并接收响应数据。这个对象叫做异步请求对象。
      全局刷新是同步行为, 局部刷新是异步行为 [ 浏览器数据没有全部更新 ]
      这个异步对象用于在后台与服务器交换数据。 XMLHttpRequest 就是我们说的异步对象。
XMLHttpRequest 对象能够:
在不重新加载页面的情况下更新网页
• 在页面已加载后向服务器请求数据
• 在页面已加载后从服务器接收数据
        所有现代浏览器 (IE7+ Firefox Chrome Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。通过一行简单的 JavaScript 代码,我们就可以创建 XMLHttpRequest 对象
创建 XMLHttpRequest 对象的语法( xhr ):
var xmlhttp=new XMLHttpRequest();
AJAX 中的核心对象就是 XMLHttpRequest
1.3 AJAX
1.3.1 什么是 AJAX
AJAX = Asynchronous JavaScript and XML (异步的 JavaScript XML )。
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分页面内容的新方法
        AJAX 不是新的编程语言,而是使用现有技术混合使用的一种新方法。 ajax 中使用的技术有 JavaScript, html , dom , xml ,css 等。主要是 JavaScript , XML.
JavaScript: 使用脚本对象 XMLHttpRequest 发送请求, 接收响应数据
XML: 发送和接收的数据格式,现在使用 json
        AJAX 不单需要前端的技术,同时需要后端(服务器)的配合。服务器需要提供数据,数据 AJAX 请求的响应结果。
1.3.2 AJAX 异步实现步骤
XMLHttpRequest 对象介绍
1 ) 创建对象方式
var xmlHttp = new XMLHttpRequest();
2 onreadstatechange 事件
        当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变 时,就会触发 onreadystatechange 事件。此事件可以指定一个处理函数 function
通过判断 XMLHttpReqeust 对象的状态,获取服务端返回的数据。
语法:
xmlHttp.onreadystatechange= function() {
if( xmlHttp.readyState == 4 && xmlHttp.status == 200){
处理服务器返回数据
}
}
下面是 XMLHttpRequest 对象的三个重要的属性:
属性说明:
onreadystatechange 属性:一个 js 函数名 或 直接定义函数,每当 readyState 属性改变时,就会调用该函数
readyState 属性:
存有 XMLHttpRequest 的状态。从 0 4 发生变化。
0: 请求未初始化,创建异步请求对象 var xmlHttp = new XMLHttpRequest()
1: 初始化异步请求对象, xmlHttp.open( 请求方式,请求地址, true)
2: 异步对象发送请求, xmlHttp.send()
3: 异步对象接收应答数据 从服务端返回数据。 XMLHttpRequest 内部处理。
4: 异步请求对象已经将数据解析完毕。 此时才可以读取数据。
status 属性:
200: "OK"
404: 未找到页面
3 ) 初始化请求参数:
方法:
open( method , url , async ) : 初始化异步请求对象
参数说明:
method :请求的类型; GET POST
url :服务器的 servlet 地址
async true (异步)或 false (同步)
例如 :
xmlHttp.open(“get”,”http:192.168.1.20:8080/myweb/query”,true)
4 ) 发送请求
xmlHttp.send()
5 ) 接收服务器响应的数据
         如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText responseXML 属性。
responseText :获得字符串形式的响应数据
responseXML :获得 XML 形式的响应数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一道光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值