您的位置:首页 > 理论基础 > 计算机网络

AJAX中的XMLHttpRequest对象

2013-12-24 10:28 246 查看
王兴奎老师的视频已经看完了,这部分的总结工作还没有开始,开始遇到新的知识点或是不大明白的知识都没有及时的进行总结,只是将自己想总结的内容都列在了Onenote中,现在回过头来一点点的进行总结,这篇博客是对XMLHttpRequest对象的总结,在总结XMLHttpRequest对象之前我们还是先来回顾一下什么是AJAX以及我们为什么要使用它。

一.什么是AJAX

说到这自己还有些羞愧,那天学敏问我AJAX的全称我没说出来,想到机房收费系统合作的时候老师问我UML的全称自己没说出来, 其实大概的意思自己也明白可是具体就是说不胡来,说明自己对这个东西的理解还是不够深刻,记得那时候给自己的安慰是老师突然这么一问,自己紧张,所以没说出来;这次是学敏问我,我们天天在一起打闹我还紧张?想想米老师那次问我没说出来的根本原因不是紧张,而是自己没有把这个重视起来,甚至是理解的不够深刻,所以当别人问我的时候才感觉手忙脚乱不知道说什么,最后归结到我的学习方法以及学习效率的问题上,学的太死板了,不能做到学以致用。好了,言归正传

AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse
James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。大家都知道ajax并非一种新的技术,而是几种原有技术的结合体。它由下列技术组合而成。

1.使用CSS和XHTML来表示。

2. 使用DOM模型来交互和动态显示。

3.使用XMLHttpRequest来和服务器进行异步通信。

4.使用javascript来绑定和调用。

在上面几中技术中,除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的,它已经是一个事实的标准,因为目前几乎所有的主流浏览器都支持它,它是AJAX的核心,该对象支持异步请求,也就是说他可以使我们使用javascript向服务器提出请求并处理响应。

二.AJAX给我们带来的好处

使用Javascript向服务器提出请求并处理响应而不阻塞用户!通过XMLHTTPRequest对象, JavaScript 可在不重载页面的情况与Web服务器交换数据。
AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。
AJAX 可使因特网应用程序更小、更快,更友好。
AJAX 是一种独立于 Web 服务器软件的浏览器技术,并被所有的主流浏览器支持等

三.什么是XMLHttpRequest对象

XMLHttpRequest是XMLHttp组件的对象,通过这个对象,Ajax可以像桌面应用程序一样只与服务器进行数据层的交换,而不必每次都刷新界面,也不必每次将数据处理的工作都交给服务器来做;这样既减轻了服务器负担又回忆了响应速度,缩短了用户的等待时间。

四.XMLHttpRequest对象与Ajax

在Ajax应用程序中,XMLHttpRequest对象负责将用户信息以异步通信地发送到服务器端,并接收服务器响应信息和数据。

需要注意的是JavaScript本身并不具有向服务器发送请求的能力,要么使用window.open()方法重新打开一个页面,要么使用XMLHttpRequest对象发送请求,不同的是,前者是普通的即同步交互模式,而后者是异步交互模式。记住,XMLHttpRequest 惟一的目的是让您发送请求和接收响应。其他一切都是页面中其他代码的工作:改变用户界面、切换图像、解释服务器返回的数据。准备好 XMLHttpRequest 之后,就可以向服务器发送请求了。

五.XMLHttpRequest对象的属性。



参考代码:

var tempxmlhttp = this.xmlhttp;
        this.xmlhttp.onreadystatechange =function(){
            if(tempxmlhttp.readyState === 4){
                if(tempxmlhttp.status === 200){
                    var responseText = tempxmlhttp.responseText;
                    var responseXML = tempxmlhttp.responseXML;
                    if(callback === undefined || callback ===null ){
                        alert("没有设置处理数据正确返回的方法!");
                        alert("返回的数据:" + responseText);
                    }else{
                        callback(responseText,responseXML);
                    }
                }else{
                    if(failback === undefined || failback === null){
                        alert("没有设置处理数据返回失败的处理方法!");
                        alert("HTTP的响应码:" + tempxmlhttp.status +",响应码的文本信息:" +tempxmlhttp.statusText);
                    }else{
                        failback(tempxmlhttp.status,tempxmlhttp.statusText);
                            
                        }
                    }
                }
            };


六.XMLHttpRequest对象的方法



参考代码:

//解决跨域的问题
            if(url.indexOf("http://") >= 0){
                url.replace("?","&");
                url = "Proxy?url=" +url;
            }
            this.xmlhttp.open(method,url,true);
            
            //如果是POST方式,需要设置请求头
            if(method === "POST"){
                this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencode");
            }
            
            this.xmlhttp.send(data);
        }else{
            alert("XMLHttpRequest对象创建失败,无法发送数据!");
        }
    };
MyXMLHttpRequest.prototype.abort = function(){
    this.xmlhttp.abort();
}   ;


自从电脑出现以来,一直是桌面软件占据着绝对主导的地位,但是互联网的出现和成功使这一切开始发生着微妙的变化。相当一部分的人都相信,迟早有一天,数据和电脑软件将会从桌面转移到互联网。也就是说,将来的电脑有可能抛弃笨重的硬盘,而直接从互联网来获取数据和服务.虽然现在看起来我们距离这一天还很遥远,并且这其中还有很多的问题需要解决,但是我觉得这个并非梦想,而是迟早将实现的现实。那么,这其中的主要问题就是互联网的连接不稳定,谁也不愿意看着自己的电脑从服务器一点一滴的下载数据,那么,ajax是不是解决了这个问题呢,与其说ajax解决了这个问题,倒不如说它只是掩盖了这个问题,它只是在服务器和客户端之间充当了一个缓冲器,让用户误以为服务没有中断。精确的说,ajax并不能提高从服务器端下载数据的速度,而只是使这个等待不那么令人沮丧。但是正是这一点就足以产生巨大的影响和震动,它实际上也对桌面软件产生了巨大的冲击。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: