Fork me on GitHub

AJAX总结

什么是AJAX

AJAX = 异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术,可实现局部刷新。主要应用于表单验证、按需获取数据、自动刷新页面。

标准XmlHttpRequest的属性

  • onreadystatechange: 每个状态改变时都会触发这个事件处理器,通常指向一个JavaScript函数;
  • readyState: 请求的状态。有5个可取值:0=未初始化,1=正在加载,2=已加载,3=交互中,4=完成;
  • responseText: 服务器的响应,表示为一个串;
  • responseXML: 服务器的响应,表示为XML。这个对象可以解析为一个DOM对象;
  • status: 服务器的HTTP状态码(200对应OK,404表示Not Found(未找到),等等);
  • statusText: HTTP状态码的相应文本(OK或Not Found等等).

XmlHttpRequest的方法

  • abort(): 停止当前请求;
  • getAllResponseHeaders(): 把HTTP请求的所有响应作为键/值对返回;
  • getResponseHeader(“header”): 返回指定首部的串值;
  • open(method, url): 建立对服务器的调用。method参数可以是GET, POST或PUT。 url参数可以是相对的或者绝对的URL。该方法还包括3个可选参数;
  • send(content): 向服务器发送请求;
  • setRequestHeader(header, value): 把指定首部设置为所提供的值。在设置任何首部之前必须先调用open().

AJAX常用方法

  • get()
  • post()
  • load() 只能用于静态html页面
  • json
  • jsonp()

最底层: ajax
第二层: load/get/post 高频使用
第三层: json/jsonp

jQuery中的AJAX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$.ajax({
url:'/comm/test1.php',
type:'POST', //GET
async:true, //或false,是否异步
data:{
name:'yang',age:25
},
timeout:5000, //超时时间
dataType:'json', //返回的数据格式:json/xml/html/script/jsonp/text
beforeSend:function(xhr){
console.log(xhr)
console.log('发送前')
},
success:function(data,textStatus,jqXHR){
console.log(data)
console.log(textStatus)
console.log(jqXHR)
},
error:function(xhr,textStatus){
console.log('错误')
console.log(xhr)
console.log(textStatus)
},
complete:function(){
console.log('结束')
}
})

常用参数

1
2
3
4
5
6
7
8
9
var configObj = {
method //数据的提交方式:get和post
url //数据的提交路劲
async //是否支持异步刷新,默认是true
data //需要提交的数据
dataType //服务器返回数据的类型,例如xml,String,Json等
success //请求成功后的回调函数
error //请求失败后的回调函数
}

JavaScript中的AJAX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$('#send').click(function(){
//请求的5个阶段,对应readyState的值
//0: 未初始化,send方法未调用;
//1: 正在发送请求,send方法已调用;
//2: 请求发送完毕,send方法执行完毕;
//3: 正在解析响应内容;
//4: 响应内容解析完毕;
var data = 'name=yang';
var xhr = new XMLHttpRequest(); //创建一个ajax对象
xhr.onreadystatechange = function(event){ //对ajax对象进行监听
if(xhr.readyState == 4){ //4表示解析完毕
if(xhr.status == 200){ //200为正常返回
console.log(xhr)
}
}
};
xhr.open('POST','url',true); //建立连接,参数一:发送方式,二:请求地址,三:是否异步,true为异步
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //可有可无
xhr.send(data); //发送
});

AJAX参考文章

AJAX之XMLHttpRequest方法和属性详解

据说帅的人都赏给博主几块钱零花钱。