Ajax

Web应用都要涉及大量的页面刷新:用户点击了某链接,请求发送回服务器,然后服务器根据用户的操作再返回新页面。即便用户看到的只是页面中的一小部分有变化,也要刷新和重新加载整个页面。使用Ajax就可以做到只更新页面中的一小部分,而不必再加载整个页面。
Ajax:Ajax的主要优势就是对页面的请求以异步方式发送到服务器。而服务器不会用整个页面来响应请求,它会在后台处理请求,与此同时用户还能继续浏览页面并与页面交互。你的脚本则可以按需加载和创建页面内容,而不会打断用户的浏览体验。

1.XMLHttpRequest对象
Ajax技术的核心就是XMLHttpRequest对象。这个对象充当着浏览器中的脚本(客户端)与服务器之间的中间人的角色。以往的请求都由浏览器发出,而JavaScript通过这个对象可以自己发送请求,同时也自己处理响应。
下面举例实现XMLHttpRequest,将以下代码保存为ajax.html

<!DOCTYPE html>
<html>
<head>
    <title>Ajax</title>
</head>
<body>

    <div id="new"></div>

    <script src="scripts/addLoadEvent.js"></script>
    <script src="scripts/getHTTPObject.js"></script>
    <script src="scripts/getNewContent.js"></script>
</body>
</html>

这个HTML文件包含了三个js文件,都在scripts文件夹中,为了模拟服务器的响应,在ajax.html文件的旁边创建一个example.txt文件,包含如下内容:This was loaded asynchronously!这个文件将充当服务器端脚本的输出。多数情况下,服务器端脚本在接到请求后,还会做一番处理再输出结果。

getHTTPObject.js文件:

function getHTTPObject(){
    if (typeof XMLHttpRequest=="undefined") 
        XMLHttpRequest=function(){  //IE浏览器创建新对象
            try{return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
                catch (e) {}
            try {return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
                catch (e) {}
            try{return new ActiveXObject("Msxml2.XMLHTTP");}
                catch (e) {}
            return false;
        }
    return new XMLHttpRequest();  //其他浏览器创建新对象
}

getNewContent.js文件:

function getNewContent() {
    var request=getHTTPObject();
    if (request) {
        request.open("GET","example.txt",true);  //open方法用来指定服务器上将要访问的文件,指定请求类型,第三个参数指定请求是否以异步方式发送和处理
        request.onreadystatechange=function(){
            if (request.readyState==4) {  服务器在发回响应时,该对象有很多属性,浏览器会在不同阶段更新readyState属性的值,4表示完成
                var para=document.createElement("p");
                var txt=document.createTextNode(request.responseText);
                para.appendChild(txt);
                document.getElementById("new").appendChild(para);
            }
        };
        request.send(null);
    }else{
        alert('Sorry,your browser doesn\'t support XMLHttpRequest');
    }
}
addLoadEvent(getNewContent);

addLoadEvent.js文件:

function addLoadEvent(func) {
    var oldonload=window.onload; //把现有的window.onload事件处理函数的值存入变量
    if (typeof window.onload!='function') {
        window.onload=func;  //若事件处理函数还未绑定函数,将新函数添加给它
    }else{
        window.onload=function(){ //若已经绑定了,就将新函数添加到现有指令的末端
            oldonload();
            func();
        }
    }
}

刷新页面,此时,example.txt文件中的文本内容就会出现在id为new的div元素中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值