xmlhttprequest object
作者:kongxx
什么是xmlhttprequest对象
一个页面可以通过一个httprequest发送一个请求来获取服务器响应,而当前页面不做刷新。
通过使用xmlhttprequest对象,开发者可以在不刷新当前页面的情况下更新当前页面的数据。
注:xmlhttprequest对象不是w3c标准,不过目前已有以下浏览器支持此对象操作:ie5.0+,safari1.2,mozilla1.0,firefox,netscape7。
创建一个xmlhttprequest对象
要创建xmlhttprequest对象,可以采用以下方法:
对于ie:
var xmlhttp=new activexobject("microsoft.xmlhttp")
对于for mozilla, firefox, safari, and netscape:
var xmlhttp=new xmlhttprequest()
xmlhttprequest对象引用
方法
描述
abort
取消当前请求
getallresponseheaders()
获取完整的http header信息
getresponseheader(headername)
获取指定的http header信息
open(method,url,async,user,passwd)
打开一个请求。
method-指定请求方法get或post
url-请求的url
async-指定异步请求响应。true表示发送请求后不等待回应而去执行别的操作;false表示请求后等待回应后才去继续别的操作。
user-访问用户(可选)
passwd-访问密码(可选)
send(content)
发送请求
setrequestheader("label","value")
设置请求头部信息
属性名
onreadystatechange
一个事件,用来捕获所有的状态变换
readystate
返回对象状态:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
responsetext
响应文本
responsexml
响应xml数据
status
返回状态数字(如:”404”
>表示“not found” “200”表示“ok”)。
statustext
返回状态文本(如:“not found” ,“ok”)
一个小例子
test1.jsp创建一个xmlhttprequest对象,并从服务器获取服务器时间填充到当前页面指定的div中,代码如下:
<%@ page contenttype="text/html;charset=gb2312" language="java" errorpage=""%>
<html>
<head>
<script language="javascript">
var xmlhttp ;
var url = "test2.jsp";
if (window.xmlhttprequest) {
xmlhttp=new xmlhttprequest();
} else if (window.activexobject) {
xmlhttp=new activexobject("microsoft.xmlhttp");
}
function func_test() {
if (xmlhttp) {
xmlhttp.open("get", url,true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readystate==4) {
document.getelementbyid('testdiv').innerhtml=xmlhttp.responsetext;
}
}
}
xmlhttp.send(null);
}
</script>
</head>
<body bgcolor="#ffffff" >
<input type="button" value="button" onclick="func_test()">
<div id="testdiv">
</div>
</body>
</html>
test2.jsp接收请求输入当前系统时间,代码如下:
<%@ page import="java.util.*"%>
<%
out.println(calendar.getinstance().gettime());
%>
将此两个文件放入tomcat中,访问test1.jsp页面,点击button,即可显示服务器时间。
由此看出,在一些开发中我们可以使用xmlhttprequest对象来处理两次请求页面表现形式相似的情况,通过xmlhttprequest对象来获取数据并替换当前页面的类似的数据内容,从而减少每次响应得数据流量,提高客户端的访问速度。