作用:实现在不刷新整个页面的情况下,对部分数据更新(异步刷新)
1.使用XMLHttpRequest对象
1.1初始化
if(window.XMLHttpRequest){//非IE浏览器
http_request=new XMLHttpRequest();
}else if(window.ActiveObject){//IE浏览器
try{
http_request=new ActiveObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request=new ActiveObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
1.2常用方法
- open()
//asyncFlag:指定请求方式,默认true为异步,false为同步,
open("GET|POST","url",[asyncFlag],[username],[password])
- send():向服务器发送请求
send(content)
- abort():停止或放弃当前异步请求
- setRequestHeader():为请求的http头设置值
setRequestHeader("header","value")
- getResponseHeader():以字符串形式返回指定的http头信息
getResponseHeader("Content-type")
1.3常用属性
- onreadystatechange:指定状态改变是触发的事件处理器
htt_request.onreadystatechange=getResutl;
-readyState:获取请求的状态,
0:初始化
1:正在加载
2:已加载
3:交互中
4:完成
- responseTest || responseXML|:获取服务器的响应
- status:返回服务器的http状态码
200:表示成功
404:文件未找到
400:错误的请求
500:服务器错误
2.Ajax使用思路:
1、创建XMLHttpRequest对象
2、open(“method”,”URL”,asyncFlag)方法创建新的请求。
3、send(content)方法发送请求数据(get方法不需要指定content参数,post方法需要指定参数)
4、onreadystatechange属性设置状态改变时的处理函数(请求成功,返回成功等)
5、处理函数中指定返回成功或返回的处理函数
6、responseXML或resopnseText属性获取服务器返回的参数。
2.1创建 checkName.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isELIgnored="false"%>
<%
String name = request.getParameter("name");
if("abc".equals(name))
out.print("<font color='red'>已经存在</font>");
else
out.print("<font color='green'>可以使用</font>");
%>
2.2 login.html
<span>输入账号 :</span>
<input id="name" name="name" onkeyup="check()" type="text">
<span id="checkResult"></span>
<script>
var xmlhttp;
function check(){
var name = document.getElementById("name").value;
var url = "http://how2j.cn/study/checkName.jsp?name="+name;
xmlhttp =new XMLHttpRequest();
xmlhttp.open("GET",url,true); //设置访问的页面
xmlhttp.send(null); //执行访问
xmlhttp.onreadystatechange=checkResult; //响应函数
}
function checkResult(){
if (xmlhttp.readyState==4 && xmlhttp.status==200)
document.getElementById('checkResult').innerHTML=xmlhttp.responseText;
}
</script>