一、什么是AJAX: Asynchronous JavaScript and XML,异步的javascript和XML
1, 它是一个客户端技术,是将原来的一些老的技术进行结合使用,产生一种新的应用2,可以跟任何服务端技术开发的程序进行交互
3,是一种异步的交互方式。异步指的是,javascript脚本发送请求后不等服务器响应,继续执行,即 请求响应和处理时异步完成的。
二、AJAX执行流程
1,创建XMLHttpRequest对象XMLHttpRequest对象不是一个国际标准,在不同服务器中有不同的实现。
var request;
//1,创建XMLHttpRequest对象
try{
//火狐浏览器标准
request = new XMLHttpRequest();
}catch(e){
//IE5,IE6标准
request = new ActiveXObject("Msxml2.XMLHTTP");
}
2,创建Ajax请求
//2,使用open方法向服务器提交请求
request.open("POST","/CascadeMenu/CascadeServlet");
open()方法是向服务器发送请求。其语法如下:
open(method , url , asynchronous , user , password);
method:指定请求的类型,一般为get或post;
url:指定请求的地址,可以使用绝对地址或相对地址,可以附带查询字符串
asynchronous:可选参数,标识请求是同步还是异步,异步请求为true,同步请求为false,默认情况下该参数为true;
user:可选参数,指定请求的用户名,没有则省略;
password:可选参数, 指定请求的密码,没有则省略
3,发送Ajax请求
//3,使用send发送请求,null表示不需要参数
request.send(null);
send(body);-----该方法仅有一个body参数,标示向服务器发送的数据,格式为字符串形式。也可以为null,即不发送任何数据。例如:var body = “userName=qiyi&sex=male&age=25”; Xmlhttp.send(body);
4,处理服务器响应
因AJAX是异步的,无法知道请求什么时候响应,所以需要通过XMLHttpRequest对象的onreadystatechange的事件处理函数来处理。在readyState的值每次改变都会触发onreadystatechange事件。
request.onreadystatechange=function(){
//4事件处理代码
if(xmlhttp.readState ==4){
if(xmlhttp.status ==200){
//请求成功完成
var result = request.responseText;
}
else{
//网络失败或者服务器错误
}
}
}
注:1)readyState的值表示当前请求的状态
2) status存储HTTP响应代码,它表示请求的处理结果。
3) XMLHttpRequest对象可以接受服务器返回的文本片段和XML文档,分别保存在responseText与responseXML属性中。
responseText:返回为String类型,服务器无需特殊操作
responseXML:返回的是XML文档,必须要求响应体的HTTP头文件信息中的“content-type”属性为"text/xml"。如
<?xml version="1.0" encoding="UTF-8">
三、AJAX的优缺点
1,优点:1)在页面与服务器通信时,页面无需刷新,用户体验度高
2)使用异步方式与服务器通信,无需打断用户的操作,具有更加顺序的响应能力
2,缺点:
1)Ajax接收的响应是XML或文本格式,需要解析后才能使用,这会耗费大量的时间和带宽。当响应数据较大时,会严重影响响应速度。
2)Ajax中无法执行后退操作。