XMLHttpRequest Object
作者:kongxx
一个页面可以通过一个HttpRequest发送一个请求来获取服务器响应,而当前页面不做刷新。
通过使用XMLHttpRequest对象,开发者可以在不刷新当前页面的情况下更新当前页面的数据。
注:XMLHttpRequest对象不是W3C标准,不过目前已有以下浏览器支持此对象操作:IE5.0+,Safari1.2,Mozilla1.0,Firefox,Netscape7。
要创建XMLHttpRequest对象,可以采用以下方法:
对于IE:
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") |
对于For Mozilla, Firefox, Safari, and Netscape:
var xmlhttp=new 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 contentType="text/html;charset=gb2312" language="java" errorPage=""%> <%@ page import="java.util.*"%> <% out.println(Calendar.getInstance().getTime()); %> |
将此两个文件放入Tomcat中,访问test1.jsp页面,点击button,即可显示服务器时间。
由此看出,在一些开发中我们可以使用XMLHttpRequest对象来处理两次请求页面表现形式相似的情况,通过XMLHttpRequest对象来获取数据并替换当前页面的类似的数据内容,从而减少每次响应得数据流量,提高客户端的访问速度。