在web应用中,我们常常因为服务器访问频繁或者网络传输问题,需要长时间等待网页响应,造成很不流畅的用户体验。为了解决这一困顿,我们引入了AJAX技术。
AJAX开发:
步骤一:在IE中实例化Msxml2.XMLHTTP对象
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
不同浏览器有不同的内置xmlhttp对象,该对象可以实现异步请求和响应。
步骤二:指定异步提交的目标和提交方式,调用xmlHTTP的open方法
xmlHttp.open("GET", "info.jsp", true);
参数一指定打开方式,参数二指定目标位置url,参数三表示同意异步(最重要)。
步骤三:指定当xmlHTTP状态改变时,需要进行的处理
xmlHttp.onreadystatechange=function() {
}
处理通过响应函数实现。
xmlhttp状态有五个:
0.未初始化,对象已创建,未调用open();
1.已初始化状态,调用open()后;
2.发送数据状态,调用send()后;
3.数据传送中状态,已经接收数据,但是未曾接收完毕;
4.完成状态,数据全部接收完毕。
步骤四:编写处理代码
if (xmlHttp.readyState==4) {
infoDiv.innerHTML = xmlHttp.responseText; //将id=infoDiv的div内部html代码全部替换
infoDiv.innerText = xmlHttp.responseText;
}
当xmlHttp状态为4(xmlHttp.readyState==4)时,开始处理;加载在响应函数内部。
步骤五:发出请求
xmlHttp.send();
实例:
function login(){
var account = document.loginForm.account.value;
var password = document.loginForm.password.value;
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
var url = "/Prj22/servlet/LoginServlet?account="+account+"&password="+password;
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange=function() {
if (xmlHttp.readyState==4) {
resultDiv.innerHTML = xmlHttp.responseText;
}
else{
resultDiv.innerHTML = "正在登录,请稍候......";
}
}
xmlHttp.send();
}
执行登录操作:
登录后:
我们可以看到,登录后浏览器地址栏并没有改变,也就是说,利用AJAX,我们实现了异步提交。