ajax获得XMLHttpRequest对象方法
发布时间:2024-09-25
发布时间:2024-09-25
ajax获得XMLHttpRequest对象方法
function createXmlHttpRequest()
{
var xmlhttp = null;
try{
//FireFox,Opera 8.0+,Safari
xmlhttp = new XMLHttpRequest();
}catch(e){//IE7.0以下的浏览器以ActiveX组件的方式创建XMLHttpRequest对象
var MSXML=['MSXML2.XMLHTTP.6.0',
'MSXML2.XMLHTTP.5.0',
'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP',
'Microsoft.XMLHTTP'];
for(var n=0;n<MSXML.length;n++)
{
try
{
xmlhttp = new ActiveXObject(MSXML[n]);
break;
}
catch(e){}
}
}
return xmlhttp;
}
function DoAjax(Url,IsAsync)
{
var result="";
//第一步得到一个XMLHttpRequest对象
var xhr= createXmlHttpRequest();
if(xhr)
{
//第二步准备一个请求连接,第三个参数为是否是异步,false则为同步,
//如果是异步,发起请求后,js代码则继续往后执行,不等待服务器返回结果
//如果为同步,则服务器必须返回结果后,js代码才能继续往下走,大部分情况我们还是使用异步的,
//如果是异步,则有一个状态属性,标示服务器当前的状态
//readyState属性表示Ajax当前的状态,它的值用数字表示
//0:代表未初始化,还没有调用open方法
//1:代表正在加载。open方法已调用,但send方法还没有调用
//2:代表已经加载完毕.send已被调用.请求已经开始
//3:代表交互中.服务器正在发送响应
//4:代表完成.响应发送完毕
//每次readyState值的改变,都会触发readystatechange事件
//如果我们把onreadystatechange事件处理赋给一个函数,那么每次readyState值的改变都会引发该函数的执行
//readyState值的变化会因为浏览器的不同而有差异.但是,当请求结束时,每个浏览器都会把readyState的值统一设
//置为4,所以我们可以通过这一个事件处理异步的数据处理
xhr.open("get",Url,IsAsync);
//第三步发起请求
xhr.send(null);
//如果是异步则监听onreadystatechange事件
if(IsAsync)
{
xhr.onreadystatechange = function()
{
//表示处理完毕
if(xhr.readyState==4)
{
//status
//服务器发送的每一个响应也都带有首部信息。三位数的状态码是服务器发送的响应中最重要的首部信息,并且属于超文本传输协议的一部分
//404:没有找到页面
//403:禁止访问
//500:内部服务器出错
//200 一切正常
//304 没有修改(服务器返回304状态,表示源文件没有被修改)
if(xhr
.status==200||xhr.status=304)
{
result = xhr.responseText;
}
}
}
}
else
{
//返回响应结果
result = xhr.responseText;
}
}
return result;
}