ajax是基于javascript和xml的,如果每次都是表单提交,两次提交的信息可能大部分相同,服务器返回一个新的页面,整个页面刷新。ajax应用向服务器发送并取回必需的数据,在不更新整个页面的前提下维护。
缺点是破坏浏览器后退按钮的行为。因为浏览器仅能记录下历史记录中的静态页面,通过后退按钮无法取消前一次操作。
ajax调用的过程:
①根据不同浏览器创建XMLHTTPRequest对象
http_request = false;
//Mozilla浏览器
if(window.XMLHttpRequest) { http_request = new XMLHttpRequest();......}
// IE浏览器
else if (window.ActiveXObject) { http_request = new ActiveXObject("Microsoft.XMLHTTP"); ......}
②发送请求
http_request.open(method, url, async);
http_request.send(content);
③服务器响应
if (http_request.readyState == 4) {//收到了完整的服务器响应
if (http_request.status == 200) { //状态正常
......
else {
alert("获取下级机构列表错误,错误代码:" + http_request.status); //页面不正常
}
}
④处理从服务器得到的数据
tableStr = http_request.responseText;或tableStr = http_request.responseXML;
if(tableStr.length > 3){
newDIV.innerHTML = tableStr;
}
注:
readyState反应的是请求的状态
0.未初始化,httpRequest已创建但还没有被初始化(没有调用open方法)
1.初始化,尚未调用send方法
2.载入完成,已调用send方法,http响应状态和头部还不可用
3.交互,已经接受了部分数据,但状态和响应头部还不完全可用
4.完成,接受到全部数据
status
200 正常返回
404 请求页面不存在
500 服务器异常