ajax请求的过程
0: 请求未初始化(还没有调用 open() )
1: 请求已经建立,但是还没有发送(还没有调用 send())
2: 请求已发送,正在处理中(通常现在可以从响应中获取内容头)
3: 请求在处理中,通常响应中已经有部分数据是可用的了,但是服务器还没有完成响应的生成
4: 响应已完成,可以获取并使用服务器的响应了
原生ajax简单封装
function ajax( aJson ){
var method = aJson.method || 'GET';
url = aJson.url,
asyn = aJson.asyn || true,
data = aJson.data || null,
fn = aJson.fn;
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject( 'Microsoft.XMLHttp' );
if( method.toUpperCase() === 'GET' && data){
url = url + '?' + data + & + new Date();
data = null;
}
xhr.open( method, url, asyn );
xhr.setRequestHeader( 'content-type', 'application/x-www-form-urlencoded' );
xhr.send( data );
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if( xhr.status >= 200 && xhr.status <= 300 ){
fn &&fn(xhr.responseText);
}else{
alert( '请求错误:' + xhr.status )
}
}
}
}