日期:2014-05-16 浏览次数:20798 次
Ajax 是Asynchronous Javascript and XML的简写,对它最多的人是无非是局部刷新技术,它可以在不刷新页面的情况下向后台发送或者请求数据。它的核心是XMLHttpRequest对象(简称XHR),在IE7+、Firfox、Opera、Chrome、Safari都支持原生的XHR对象即显式使用var xhr = new XMLHttpRequest()就可以直接创建此对象。如果要支持IE7以下版本的,则需要使用ActiveX对象来实现。随着WindowXP的退休,相信用到IE7以下版本的几乎没有了,但还是提供以前的兼容实现方式:
function createXHR () {
if (typeof XMLHttpRequest != "undefined") {
return new XMLHttpRequest();
} else if (typeof ActiveXObject != "undefined") {
var version =["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp.2.0"],
i,
len;
for (i = 0.len = version.length; i < len; i++) {
try{
new ActiveXObject(version[i]);
arguments.callee.activeXString = version[i];
break;
} catch (ex){
//dosomething();
}
};
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("No XHR object available!");
};
}下面是你所看见AJAX最原生的js实现方式,现在jquery等框架已经完全封装,下面讲解每个步骤的作用以及使用。var xhr = new createXHR();
xhr.onreadyStatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300) { //http状态为成功
alert(xhr.responseText);
} else {
alert("请求没有成功!状态说明:" + xhr.statusText);
}
};
}
xhr.open("get", "example.jsp", true);//启动一个请求以备发送
xhr.send(null); //当请求类型为GET时,参数为null;为POST时,传送的是作为请求主体的数据。responseText:作为响应主体返回的文本。var xhr = new createXHR();
xhr.open("get", "example.jsp", false); //第三个参数为false,为同步方式
xhr.send(null);
if (xhr.status >= 200 && xhr.status < 300) { //http状态为成功
alert(xhr.responseText);//处理数据
} else {
alert("请求没有成功!状态说明:" + xhr.statusText);
}很容易看到,只有到xhr在浏览器得到服务器方面返回的数据之后才会往下执行;在xhr.open()之后,send()之前可以设置请求的头部信息关于头部信息,请参考HTTP协议,
例如下面将用户信息表单序列化之后发送到服务器,告诉服务器我发送的内容是表单形式。
xhr.open("post", "example.jsp", true);
setRequestHead("Content-Type", "application/x-www-form-urlencoded");
var form = document.getElementById("user-info");
xhr.send(serialize(form));