XMLHttpRequest对象
1.IE把XMLHttpRequest对象当作一个Activex控件,其它浏览器如FF等把它当作一个本地JavaScript对象。
2.创建XMLHttpRequest对象
var xmlHttp;//创建全局变量xmlHttp保存XMLHttpRequest对象的引用
function createXMLHttpRequest()
{
if(window.ActiveObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}
3.由于JavaScript具有动态类型的特征,而且XMLHttpRequest在不同浏览器上的实现是兼容的,所以可以使用同样的方式访问XMLHttpRequest实例的属性和方法。
标准XMLHttpRequest操作
方法 |
说明 |
void Abort() |
停止当前请求 |
string getAllResponseHeaders() |
把HTTP请求的所有响应首部作为键/值返回 |
string GetResponseHeader(string header) |
返回指定首部的串值 |
void open("method","url") |
建立对服务器的调用。Method参数可以是GET,POST或PUT。Url参数可以是相对URL或绝对URL,提供所调用资源的URL |
void open(string method,string url,boolean asynch,string username,string password) |
同上,上面两个是必填参数,下面这些是可选的。Boolean值指示这个调用是同步和还是异步的,默认为true, 表示异步的,如果为false,处理就会等待,直到从服务器返回响应为止。 |
soid sent(string content) |
向服务器发送请求,如果为异步的,则该方法会立即返回,否则它会等到接收到响应为止。 |
void setRequestHeader(string header,string value) |
为Http请求中一个给定的首部设定值,第一个参数表示要设置的首部,第二个参数表示要在首部中放的值,这个方法必须在调用open()方法之后才能调用。 |
标准XMLHttpRequest属性
属性 |
说明 |
onreadystatechange |
每个状态改变时会触发这个事件处理器,通常会调用一个JavaScript函数 |
readystate |
请求的状态,有5个可能的值,0未初始化,1正在加载,2已加载,3交互中,4完成 |
responseText |
服务器的响应,表示为一个串 |
responseXML |
服务器响应,表示为XML,这个对象可以解析为一个DOM对象 |
status |
服务器的HTTP状态吗,200对应OK,404对应未找到(Not Found) |
statusText |
HTTP状态对应的文本,OK或Not Found等等 |
一个Ajax简单请求示例:
创建一个XML文件,里面写一些内容来读取,再创建一个代码页面,可以是html也可以是.aspx等。
XMLHttpRequest对象发送请求一般有四个步骤:
1.创建XMLHttpRequest对象的一个实例
2.告诉XMLHttpRequest对象,哪个函数会处理XMLHttp对象状态的改变,为此要把对象的onreadystatechange属性设置为指向JavaScript函数的指针
3.指定请求的属性,XMLRequest对象的open()方法会指定将发出的请求,该方法有三个参数,第一个是指示所用方法(通常是GET或POST)的串,第二个是目标资源URL的串,第三个是一个布尔值,指示是否是异步请求
4.将请求发送给服务器,XMLHttpRequest对象的send()方法把请求发送到指定的目标资源,send()方法接受一个参数,通常是一个串或一个DOM对象,这个参数作为请求的一部分发送到目标URL,当向send方法提供参数时,要确保open()中指定的是POST,否则使用null
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
var xmlHttp;//创建全局变量xmlHttp保存XMLHttpRequest对象的引用
function startRequest(){
createXMLHttpRequest(); //第一步
xmlHttp.onreadystatechange=handleStateChange;//第二步
xmlHttp.open("GET","testXML.xml",true);//第三步
xmlHttp.send(null);//第四步
}
//创建XMLHttpRequest对象
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
}
function handleStateChange(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
alert("The server replied with: "+xmlHttp.responseText);
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" value="Start Basic Asynchronous Request " onclick="startRequest();" />
</div>
</form>
</body>
</html>