什么是ajax?
ajax的全称就是“Asynchronous JavaScript and XML”(异步JavaScript和XML)。是一种创建交互式网页应用的网页开发技术。(就是在不刷新整个网页的情况下更新部分数据)。
ajax原理
通过XMLHttpRequest对象向服务器发送异步请求,然后从服务器获取数据,并用JavaScript操作DOM,来更新页面。
那么好了,XMLHttpRequest又是什么呢,它是ajax的核心机制,最好是从IE5就是开始引用了,是异步请求的技术。
(说到这里大家是不是想起了IE6,一个神奇的浏览器)。
XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
其实简单点说就是JavaScript可以先服务器发送请求和处理响应了,还不阻塞用户的其他操作,并且还能达到无刷新页面更新数据。
ajax的步骤?
1、创建XMLHttpRequest对象(创建一个异步调用的对象)。
2、建立连接
3、发送请求
4设置函数监控状态,接收数据
下面给大家来一段ajax的封装:
function ajax(json){
json=json||{};
json.data=json.data||{};
json.type=json.type||'get';
json.timeout=json.timeout||0;
//1.创建对象
try{
var oAjax=new XMLHttpRequest();
}catch(e){
var oAjax=new ActiveXObject('Miscrosoft.XMLHTTP');
}
//2.字符串拼起来
var arr=[];
for(var name in json.data){
arr.push(name+'='+json.data[name]); //?
}
var sData=arr.join('&');
if(json.type=='post'){
//3.连接
oAjax.open('POST', json.url, true);
oAjax.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
//4.发送
oAjax.send(sData);
}else{
oAjax.open('GET', json.url+'?'+sData, true);
oAjax.send();
}
//5.接收
oAjax.onreadystatechange=function (){
if(oAjax.readyState==4){
clearTimeout(timer);
if(oAjax.status>=200&&oAjax.status<300 || oAjax.status==304){
json.success&&json.success(oAjax.responseText);
}else{
json.error&&json.error(oAjax.status);
}
}
};
if(json.timeout){
var timer=setTimeout(function (){
oAjax.abort();
}, json.timeout);
}
}
接下来我们说一说readySdate状态码了。
0、初始化,注:没有调用open方法;
1、正在加载。注:open方法被调用,send方法还没有;
2、已加载完毕。注:send被调用,请求已经开始;
3、交互中。注:服务器正在发送响应;
4、完毕。注:响应发送完毕
GET与POST的区别**
get---32K 不安全 易于分享数据 通过URL传输
post---1G 相对安全 不易于分享 不通过URL传输
ajax中用到的HTTP状态码
1、200 正常 (OK)
2、304 没有被修改(not modified)
3、404 没有找到页面(not found)
4、403 禁止访问(forbidden)
5、500 内部服务器出错(internal service error)
还有要注意的就是json解析了
因为我们都知道我们获取回来的数据都是字符串形式,所以我们要把字符串形式的json转换成真正的json,下面说两种方法:
1:eval
2:JSON.parse(str)
注:需要json的标准格式:
1.名字必须有引号
2.只能用双引号,不能用单引号
{a: 12, b: 5} => {"a": 12, "b": 5}
{'a': 12, b: 'abc'} => {"a": 12, "b": "abc"}
其他还有很多要注意的地方,以后想起来在补充吧。
以上只是个人总结,如有错误,希望指出,一定认真改进。