ajax基础
2016-04-10 13:41
225 查看
ajax 的全称是AsynchronousJavaScript and XML,其中,Asynchronous 是异步的意思,
它有别于传统web开发中采用的同步的方式。
它传输的时候要求接受方和发送方的时钟是保持一致的。
举个例子来说同步和异步,
同步就好像我们买楼一次性支付,而异步就是买楼分期付款。
所以当我们把这种生活中的概念化解释转移到理解Ajax异步上来就发现,
它是通过这样一种异步的方式来让用户更加收益,也就是说可以让用户的有更好的体验性。其实这也是Ajax的意义所在。
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,
然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。
要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,是一种支持异步请求的技术。
简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。
达到无刷新的效果。
readystate属性表示请求/响应过程的当前活动阶段 该属性可取的值如下
0:未初始化。尚未调用open()方法
1:启动。已经调用open()方法,但尚未接受响应
2:发送。已经调用send()方法
3:接收。已经接收到部分响应数据
4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了
status:响应的http状态
statusText:HTTP状态的说明
responseText:作为响应主体被返回的文本
ajax的常见写法
创建xhr对象
利用ajax发送get请求
它有别于传统web开发中采用的同步的方式。
同步和异步
异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。
举个例子来说同步和异步,
同步就好像我们买楼一次性支付,而异步就是买楼分期付款。
所以当我们把这种生活中的概念化解释转移到理解Ajax异步上来就发现,
它是通过这样一种异步的方式来让用户更加收益,也就是说可以让用户的有更好的体验性。其实这也是Ajax的意义所在。
Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,
然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。
要清楚这个过程和原理,我们必须对 XMLHttpRequest有所了解。
XMLHttpRequest是ajax的核心机制,是一种支持异步请求的技术。
简单的说,也就是javascript可以及时向服务器提出请求和处理响应,而不阻塞用户。
达到无刷新的效果。
XMLHttpRequest的常见属性
readystatechange时间用来检测每次状态变化后readystate的值。readystate属性表示请求/响应过程的当前活动阶段 该属性可取的值如下
0:未初始化。尚未调用open()方法
1:启动。已经调用open()方法,但尚未接受响应
2:发送。已经调用send()方法
3:接收。已经接收到部分响应数据
4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了
status:响应的http状态
statusText:HTTP状态的说明
responseText:作为响应主体被返回的文本
ajax的常见写法
创建xhr对象
function createXHR(){ if(typeof XMLHttpRequest!="undefined"){ return new XMLHttpRequest(); }else if(typeof ActiveXObject!="undefined"){ //ie7之前 if(typeof arguments.callee.activeXString!="string"){ var versions=[ "MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp" ], i,len; for ( i = 0,len=versions.length; i < len; i++) { try{ new ActiveXObject(versions[i]); arguments.callee.activeXString=versions[i]; break; }catch(ex){ } } } return new ActiveXObject(arguments.callee.activeXString); }else{ throw new Error("no XHR Object available"); } }
利用ajax发送get请求
var ajaxGet=function(url,callback){ var xhr=createXHR(); xhr.onreadystatechange=function(){ if (xhr.readyState==4) { if (xhr.status>=200&&xhr.status<300||xhr.status==304) { callback(JSON.parse(responseText)); }else{ alert("request was unsuccessful:"+xhr.status); } } } xhr.open('get',url,true); xhr.send(null); }
相关文章推荐
- Android设计模式之单例模式
- 数码相机传感器
- C++与SQL Server2008连接及配置
- Facebook 还是非死不可
- 51nod1240莫比乌斯函数
- 清理缓存 IPackageStatsObserver
- 系统通知栏
- Intent传递对象的几种方式
- Redis学习入门
- 设计模式介绍
- 浅析Linux中SQL及其用法
- Shell 十三问整理
- React-native Redux 干货分享实践
- 2016.4.10 重生
- 学习bootstrap框架的demo
- 【arduino】通过Esp8266-01模块实现的WiFi通信(1)简介和搭建编程环境
- 关于双指针
- 第6周项目2-带武器的游戏角色
- comparable 和 comparator
- ZOJ3623:Battle Ships(全然背包)