// 想发送HTTP请求,必须先初始化XMLHTTP对象
var httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
//更加完善的创建XMLHTTP请求的JavaScript代码
function CreateRequest(){
var httpRequest;
if(window.XMLHTTPRequest){//Safari、Firefox、Chrome
httpRequest=new XMLHTTPRequest();
}
else if(window.ActiveXObject){//IE
httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}
return httpRequest;
}
//发送Http请求
var httpRequest=CreateRequest();
httpRequest.open('GET','~/Login.ashx',true);
httpReques.send(null);
//Ajax open(method,url,asynchronous)
//method 发送的HTTP方法必须大写
//url 安全限制,必须请求本域名下的url
//asynchronous 是否异步,false阻止Js发送的请求
//send(data)
//当发送的请求为POST时,发送的请求格式为(username=admin&password=123456)
//示例,GET请求
var httpRequest=CreateRequest();
httpRequest.open('GET','~/Login.ashx?username=admin&password=123456',true);
httpRequest.send(null);
//请求的消息
GET/~/Login.ashx?username=admin&password=123456 HTTP/1.1
//POST请求 发送POST请求时必须修改发送的HTTP消息头,否则发送的HTTP消息不会被服务器接收
<input type="button" value="向服务器发送POST请求……" onclick="AjaxPost()" />
function AjaxPost(){
var httpRequest=CreateRequest();
httpRequest.open('POST','request.ashx',true);
httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencode');
httpRequest.send('username=admin&password=123456');
}
//响应回调函数
var req=CreateRequest();
req.onreadystatechange=function(){
};//匿名回调函数
//在回调函数中我们首先要检查回调函数的状态
req.onreadystatechange=function(){
if(req.readystate==4){
alert('AjaxRequest is OK!');
}
else{
alert('AjaxRequest never complete!');
}
};
//请求状态包括五种:
//0、未初始化,没有调用open方法
//1、已经调用send的方法,正在发送请求
//2、send发送结束,已经接收到全部HTTP响应消息
//3、正在解析请求消息,消息状态和响应头不可用
//4、完成