AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。ajax能够实现网页的局部刷新,即在不重新加载网页的情况下对网页局部进行刷新。
1、创建XMLHttpRequest的对象。
var xhr = new XMLHttpRequest();
IE5和IE6需要创建 ActiveXObject的对象
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
2、规定请求的类型、URL 以及是否异步处理请求。
- method:请求的类型;GET 或 POST
- url:文件在服务器上的位置
- async:true(异步)或 false(同步)
xhr.open("GET", "/helloAjaxServlet", true);
3、在条件满足时处理
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("div1").innerHTML = xhr.responseText;
}
};
属性 | 描述 |
---|---|
onreadystatechange | 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。 |
readyState |
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
|
status | 200: "OK" 404: 未找到页面 |
在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
当 readyState 等于 4 且状态为 200 时,表示响应已就绪:
4、发送请求
xhr.send();
如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。
属性 | 描述 |
---|---|
responseText | 获得字符串形式的响应数据。 |
responseXML | 获得 XML 形式的响应数据。 |
********************************************************************************************************************************************
实例:点击按钮替换div的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>helloAjax html</title>
<script>
// 第一件事
window.onload = function () {
var oBtn = document.getElementById("btn");
oBtn.onclick = getData; // 如果方法后面加括号,相当于方法的一次执行
};
function getData() {
var xhr = createXmlHttpRequest();// 1. 创建XMLHttpRequest对象 ie5、ie6无法兼容
// alert(xhr);
xhr.open("GET", "/helloAjaxServlet", true);// 2. open方法,指向servlet
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
document.getElementById("div1").innerHTML = xhr.responseText;
}
}; // 3. 检测XMLHttpRequest对象的状态,在合适的时候处理
xhr.send();// 4. 发送请求
}
function createXmlHttpRequest() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
// 针对ie5和ie6
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
alert("请更换浏览器");
return null;
}
}
</script>
</head>
<body>
<h1>helloAjax html</h1>
<input type="button" id="btn" value="提交"/> <br>
<div id="div1">原始的div标签中的内容</div>
</body>
</html>