现在大部分的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>