首页 >> 分享>>Javascript>>Ajax基础
Ajax基础
Ajax,译为异步JavaScript和XML(Asynchronous JavaScript+XML)。它的主要作用是无需重新加载页面,通过浏览器内置XMLHttpRequest对象向服务器请求或者发送数据.Ajax的核心就是XMLHttpRequest(XHR)对象。熟悉使用它是我们做前端必须要掌握的一个基础的技能。
不过说来也挺惭愧的,实际运用中,一般是用的已经封装好的ajax()方法,无暇去顾及最低层的细节。不过现在还是好好的学学Ajax的基础吧。
这里要感谢IE,虽然我一直对IE没什么好感,它就是一个奇葩,不过每种事物多样发展,毕竟是好的,有不同,有争议,有竞争,才有万事万物的发展。XMLHttpRequest对象是首先由微软引入的一个特性,具体的产品就是IE5。感谢IE,感谢微软,引进这么好的一个东东,推进WEB的发展。
标准浏览器中,引进了原生的XMLHttpRequest对象,是一个全局的对象。而IE的XMLHttpRequest对象则是通过内置于MSXML库中的ActiveX对象实现。IE存在3种不同版本的XHR对象:MSXML2.XMLHttp
,MSXML2.XMLHttp.3.0
,MSXML2.XMLHttp.6.0
。
创建一个XHR对象的方法:
function createXHR(){ if (window.XMLHttpRequest){ return new XMLHttpRequest(); } else if (window.ActiveXObject) { if (!arguments.callee.activeXString) { var versions = ['MSXML2.XMLHttp.6.0', 'MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp']; for (var i = 0, len = version.length; i < len; i++) { try { var xhr = new ActiveXObject(version[i]); arguments.callee.activeXString = versions[i]; return xhr; } catch (ex) { //Skip } } } return new ActiveXObject(arguments.callee.activeXString); } else { throw new Error('XHR object unavailable.'); } } //创建XMLHttpRequest 实例 var xhr = createXHR();
XHR对象的方法,属性,和事件:
XHR实例对象,提供了一些方法供我们方便使用之。
1、xhr.open()
这个方法接收3个参数:请求的类型(method), 请求的地址(url),是否为异步请求( isAsynchronous),通过调用这个方法,我们可以初始化一个xhr请求.
2、xhr.send()
这个方法接收1个参数:请求的数据(data),如果不发生数据则为null,send方法,启动xhr,并且发送数据。
XHR实例对象,还有一些常用的属性
1、responseText,xhr请求响应的内容文本
2、responseXML,xhr请求响应的xml类型的数据
3、status,xhr响应的HTTP状态码
4、statusText,HTTP状态的说明文本
5、readyState,请求和响应过程的阶段,用数值(0,1,2,3,4)表示,代表不同的阶段
[0] 未初始化,未调用open方法
[1] 启动,已经调用open方法,未调用send方法
[2] 发送,已经调用send方法,但未收到接收响应
[3] 接收,已经收到数据,数据未接收完成
[4] 接收完成,数据接收完成
注意,响应的内容文本(responseText)包含响应的responseXML。如果有xml响应内容,responseText里面也会有相应内容,通常我们通过responseText就可以获取全部响应内容。
xhr还提供一个事件(onreadystatechange),以供异步调用xhr时的时候使用。具体的例子如下:
var xhr = createXHR(); xhr.onreadystatechange = function(){ if (xhr.readyState == 4) { if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304 ) { alert(xhr.responseText); } else { alert('Error: ' + xhr.status); } } } xhr.open('get', '/test/url/', true); xhr.send(null);
需要说明的是,绑定onreadystatechange事件需要在open方法调用前绑定。
另外透露下最近失业了,前几天裸辞了,有人问我为啥选择裸辞而不是先找好工作再跳槽,1、我的回答是我觉得那样对原公司不好,感觉如果在原公司找工作就是偷偷摸摸,偷情一般。不够道义。2、对自身也是一种考验,你会经历许多。
所以呢,即便这样对自身不利,我还是做出了这样的选择。关于辞职的原因,其实也很简单,给自己多一个选择,多一些机会。以前的同事,公司都挺好,在此还得表示感谢,谢谢你们!
然后,生活还得继续,接下来就是找工作吧,寻找下一段旅程,希望能有所收获,有所成长,我相信一定会很精彩。
If you can fight, fight.(*^__^*)