原生js实现Ajax
一般来说,大家可能都会习惯使用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax发送呢?
jquery提供的方法:
$.ajax({
url:" ",
type:" ",
data: " " ,
dataType: " ",
success:funtion(){
},
error:function(){
}
})
原生的js 实现 Ajax方法:
var Ajax = {
get: function(url,fn){
var obj = new XMLHttpRequest(); // XMLHttpRequest 对象 用于在后台与服务器交换数据
obj.open("GET",url,true);
obj.onreadystautechange = function(){
if(obj.readyState == 4 && obj.status == 200 || obj.status ==304){ // readyState == 4 说明请求已完成
fn.call(this,obj.responseText); // 从服务器获的数据
}
};
obj.send(null);
},
post:function(url,data,fn){
var obj = new XMLHttpRequest();
obj.open("POST",url,true);
obj.setRequestHeader("Content-type","application/X-www-from-urlencoded"); //发送信息至服务器是内容编码类型
obj.onreadystatechange = function(){
if(obj.readyState == 4 && obj.status == 200){
fn.call(this,obj.responseText);// 返回结果
}
}
obj.send(data)
}
};
注释:
1. open() 方法需要三个参数:
第一参: 定义发送请求所使用的方法,(GET,POST).与POST相比,GET更简单也更快,并且在大部分情况下都能使用,然而,在以下情况中,请使用POST请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(post没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
第二个参数规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务))。
第三个参数规定应当对请求进行异步地处理(true(异步)或 false(同步))。
2. send() 方法可将请求送往服务器。
3. onreadystatechange 属性存有处理服务器响应的函数。
4. readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。