解决问题:
在非异步网站中,当用户进行请求时,只有当服务器响应后,页面重新绘制,用户才能继续操作,其交互性及用户体验极差
Ajax(异步请求):
在进行请求之后不用等待服务器的响应,可以继续后续的操作,有很好的用户体验
Ajax对象:XMLHttpRequest
由于不同的浏览器声明该对象的方法式不一样,so,在声明时需要做些处理
现在浏览器主要分为IE和非IE浏览器
so:
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("MSEMl2.XMLHTTP");
//alert('1.2');
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//alert('Microsoft');
}
catch (e) {
xmlHttp = false;
}
}
if (!xmlHttp && typeof (XMLHttpRequest) != 'undefined') {
xmlHttp = new XMLHttpRequest();
//alert('Other');
}
XMLHttpRequest的方法及属性:
open():建立到服务器的新请求。
send():向服务器发送请求。
abort():退出当前请求。
readyState:提供当前HTML的就绪状态。
responseText:服务器响应的返回文本。
onreadstatechange:后面跟上函数方法的名称,当HTTP状态改变时,执行该方法。
Ajax的沙箱模式:
这是一个不可跨域模式,如:该脚本在www.AAA.com上,那么就只能想这个服务器发送请求。
HTTP的5中状态:
0:请求没有发出(在调用open()之前)
1:请求已经建立但还没有发出(调用send()之前)。
2:请求已经发出正在处理。
3:服务器已处理相应,但还未完成。
4:响应已完成,并且可以使用。
服务器端的响应:
服务器端的响应分为:返回客户期望数据和未返回客户期望的数据
未返回客户的期望数据的情况:
404:输入了错误的URL
403:访问的数据受保护
401:禁止访问
返回期望数据的情况:
200:表示一切顺利
SO,处理响应应为:
function update()
{
if(xmlHttp.readyState==4&&xmlHttp.status==200)
{
alter("AAAA");
}
}