全局刷新和局部刷新
全局刷新:整个浏览器内容全部更新。在网络中传输大量数据,浏览器需要重新加载,渲染页面
局部刷新:浏览器内部发起请求,浏览器局部内容被更新。浏览器url不会动。网络中传输数据较少,给用户体验更好
AJAX是用来做局部刷新的。通过异步对象代替浏览器发起请求。
异步请求对象
所有现代浏览器都内建了XMLHttpRequest对象。创建XMLHttpRequest对象u语法(xhr):
var xmlhttp=new XMLHttpRequest();
这个异步对象存储在浏览器内存中,使用JS语法创建和使用XMLHttpRequest对象
AJAX
“Asynchronous Javascript And XML”(异步 JavaScript 和 XML)
一种做局部刷新的方法,不是语言。AJAX包含的技术主要是JS,DOM,CS,SML等。核心是JS和XML。JS负责创建异步对象,发送请求,更新页面DOM对象。AJAX请求需要 服务器的数据。XML负责网络中传输的数据格式(现在使用的JSON)
AJAX异步实现步骤4步
AJAX中使用XMLHttpRequest对象。
处理数据在第二步是因为请求状态发生变化的时候,异步对象会自动调用onreadstatechange事件对应的函数。
完整示例
xmlHttp.onreadstatechange=funtion(){
//处理请求状态变化。
if(readyState==4 && status==200){
//更新页面
var data=xmlHttp.responseText;
document.getElementById("name").value=data;
}
}
1、创建对象方式
var xmlhttp=new XMLHttpRequest();
2、异步对象 & 绑定事件 onreadstatechange
onreadstatechange事件:
当异步对象发起请求,获取了数据都会触发这个事件。这个事件需要指定一个函数,在函数中处理状态的变化。
例如:
xmlHttp.onreadstatechange=funtion(){
//处理请求状态变化。
}
异步对象 readyState属性
存有XMLHttpRequest对象的状态,从0到4。
0:请求未初始化,创建异步请求对象var xmlhttp=new XMLHttpRequest();
1:初始化异步请求对象,xmlHttp.open(请求方式,请求地址,true)
2:异步对象发送请求,xmlHttp.send()
3:异步对象接受应答数据,从服务端返回数据。XMLHttpRequest内部处理。(3是异步对象内部使用)
4:异步请求对象已经将数据解析完毕。此时才可以读取数据。(常用,在4的时候,可以使用数据更新页面)
异步对象 status属性
表示网络请求的状况,如果成功返回200,失败则可能是404等…
需要当status==200时,表示网络请求是成功的。
3、初始异步请求对象
异步的方法open()
xmlHttp.open(请求方式 , 服务器端地址 , 同步|异步(默认true表示异步));
例如
xmlHttp.open("get","loginServlet?name=nike&pwd=123",true);
4、发送请求
xmlHttp.send();
获取服务器端返回的数据,使用异步对象的属性 responseText
例如
xmlHttp.responseText;
异步与同步
xmlHttp.open("get","loginServlet?name=nike&pwd=123",true);
其中第三个参数表示了true异步,false同步。使用异步对象发起请求后,不用等待数据处理完毕就可以执行其他操作。
同步则需要等待程序顺序执行,效率较低。
Cache
解决数据字典储存问题,相当于要将数据保存到服务器的内存中。如果服务器处于开启状态,我们就一直能从该缓存中去的数据。
application(全局作用域,上下文作用域)
在服务器启动阶段,将数据存到服务器,服务器启动阶段,数据始终存在。
将数据保存到服务器缓存中,application.setAttribute();
从服务器缓存中取得数据,application.getAttribute();
数据字典
指的是在应用程序中,做表单元素选择内容的相关数据。
普遍应用在下拉框中
数据字典提供了两张表:字典类型表、字典值表
一种类型对应多个值,一个值只能从属于一个类型