AJAX实例:XHR的入门

XHR对象的使用是 AJAX 的核心。为了学习的方便,在编写代码过程中没有用服务端开发的部分,Web前端开发与服务端开发的结合处在于“响应数据”(如XML)。 XML部分我直接写好已放在服务器了,重点不在服务端程序如何去从数据库调出相应的数据的内容。

一个很简单的示例:点击“查看”按钮,用户名(username)显示在网页中。

HTML代码:

1 None.gif < label > 用户名 </ label >
2 None.gif < span > username 值 </ span >
3 None.gif < a href ="#" onclick ="ajaxread('3.xml', ''); return false;" > 查看 </ a >

XML代码:

1 None.gif <? xml version="1.0" encoding="gb2312" ?>
2 None.gif < root >
3 None.gif    < username >
4 None.gif        george wing
5 None.gif    </ username >
6 None.gif </ root >

 

Javascript代码:

1 ExpandedBlockStart.gif ContractedBlock.gif function ajaxread(file, postData) dot.gif {
2InBlock.gif    var req = createXMLHTTPObject();
3InBlock.gif    if(!req) return;
4ExpandedSubBlockStart.gifContractedSubBlock.gif    req.onreadystatechange = function() dot.gif{
5InBlock.gif        if (req.readyState != 4) return;
6ExpandedSubBlockStart.gifContractedSubBlock.gif        if (req.status != 200 && req.status != 304) dot.gif{
7InBlock.gif            alert('HTTP error ' + req.status);
8InBlock.gif            return;
9ExpandedSubBlockEnd.gif        }

10InBlock.gif       
11InBlock.gif        updateobj('span', req.responseXML.getElementsByTagName('username')[0].firstChild.nodeValue);
12ExpandedSubBlockEnd.gif    }

13InBlock.gif    req.open('GET', file, true);
14InBlock.gif    req.setRequestHeader('User-Agent','XMLHTTP/1.0');
15InBlock.gif    if (req.readyState == 4) return;
16InBlock.gif    req.send(postData);
17ExpandedBlockEnd.gif}

18 ExpandedBlockStart.gifContractedBlock.gif function updateobj(obj, data) dot.gif {
19InBlock.gif    document.getElementsByTagName(obj)[0].firstChild.nodeValue = data;
20ExpandedBlockEnd.gif}

21 None.gif
22 None.gif var XMLHttpFactories = [
23 ExpandedBlockStart.gifContractedBlock.gif    function () dot.gif {return new XMLHttpRequest()} ,
24 ExpandedBlockStart.gifContractedBlock.gif    function () dot.gif {return new ActiveXObject("Msxml2.XMLHTTP")} ,
25 ExpandedBlockStart.gifContractedBlock.gif    function () dot.gif {return new ActiveXObject("Msxml3.XMLHTTP")} ,
26 ExpandedBlockStart.gifContractedBlock.gif    function () dot.gif {return new ActiveXObject("Microsoft.XMLHTTP")} ,
27 None.gif];
28 None.gif
29 ExpandedBlockStart.gifContractedBlock.gif function createXMLHTTPObject() dot.gif {
30InBlock.gif    var xmlhttp = false;
31ExpandedSubBlockStart.gifContractedSubBlock.gif    for(i=0; i<XMLHttpFactories.length; i++) dot.gif{
32ExpandedSubBlockStart.gifContractedSubBlock.gif        try dot.gif{
33InBlock.gif            xmlhttp = XMLHttpFactories[i]();
34ExpandedSubBlockEnd.gif        }

35ExpandedSubBlockStart.gifContractedSubBlock.gif        catch(e) dot.gif{
36InBlock.gif            continue;
37ExpandedSubBlockEnd.gif        }

38InBlock.gif        break;
39ExpandedSubBlockEnd.gif    }

40InBlock.gif    return xmlhttp;
41ExpandedBlockEnd.gif}

学会AJAX的关键是XHR对象的使用,另外还需要HTTP的知识。

(完)

AJAX 系列blog文章:

AJAX 实例:ASP.NET 服务端的XML处理

Ajax:用异步回调对ASP.NET 开发重构实例

AJAX实例:ASP.NET中的文本及包括JSON响应处理

转载于:https://www.cnblogs.com/georgewing/archive/2008/07/20/1247074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值