现在大部分的ajax,异步执行的方法基本上都是jQuery,Up主属于一个喜欢造轮子的人,所以更多的倾向于使用原生方法。原生方法相比于jQuery而言,我觉得并没有什么困难的地方,更多的还是在于一些基本知识点的掌握。

XMLHttpRequest对象,用来创建一个ajax的异步请求。在ie5、6上,不支持XMLHttpRequest构造,所以ie65、6版本使用ActiveXObject(“Microsoft.XMLHTTP”)来创建异步请求。

XMLHttpRequest类中,onreadystatechange变量用来存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。open方法规定请求的类型、URL 以及是否异步处理请求。send方法用于将请求发送到服务器。readyState变量用来存储XMLHttpRequest用来存储状态发生改变时候的状态码。status变量用来判断服务器返回的状态,一般当状态为200的时候,为成功执行请求。

注意:
1、如何使用Ajax对form进行提交
如果要使用form表单作为提交,则可以使用FormData方法将form表单格式化为可以发送post数据格式

2、如何将response回来的数据存储到变量中
存储问题需要考虑到JS中没有引用传递的说法,对于函数中的参数的传递,JS只有值传递一种办法。
但因为数组、对象都是保存的地址,所以,可以利用数组或者对象来进行引用传递。
但另一个需要注意的问题是onreadystatechange这个变量只存来存储XMLHttpRequest的状态发生变化时所执行的函数名,它不能传递参数,不能传递参数,不能传递参数。
所以,还要单独定义函数,然后让onreadystatechange所存储的函数来执行被定义的函数,将定义好的数组或者对象传递进去,获取数据。

代码示例:

<script>
//定义全局变量 
var xmlHttp;

//如果window中存在XMLHttpRequest对象,则初始化一个到xmlHttp的引用
//否则使用ActiveXObject创建
if ( window.XMLHttpRequest ) xmlHttp = new XMLHttpRequest; 
else xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  

// 创建当XMLHttpRequest状态改变时执行的动作
// 如果XMLHttpRequest状态为4,服务器响应状态为200
// 将返回数据输出
xmlHttp.onreadystatechange = function () { 
if(xmlHttp.readyState == 4 && xmlHttp.status == 200)  
	document.write(xmlHttp.responseText);
} 

//设置请求类型、目的地址 
xmlHttp.open("post","service.php",true);

//使用post方法提交的时候需要添加的声明
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//使用post请求的时候,send方法中需要指定post的参数;如果使用get方法,则参数留空
xmlHttp.send(blog=worldbooks);  
</script>