[原创]Ajax基本原理讲解

这段时间在学习ajax,前今天给公司同事讲解了一下基本原理,也随便放在网上给大家参考一下。
我认为ajax简单的讲就是客户端通过javascript脚本获取服务器端的文本,通过解析返回值,更新部分的网页内容。
下面结合一个获取QQ天气预报网页,并且对返回值进行处理的例子进行一下讲解。
行数:解释。
14:点击按钮开始获取。
29:显示右上角的“正在加载...”的小区域(仿造gmail)。
30:创建XMLHTTP,IE的方式,其它的浏览器创建方式不同。
31:XMLHTTP状态发生变化时调用的回调函数,实现异步调用。
32:指定调用的URL。
33:开始调用(可以发送一段XML到服务器端,例子可以查看:用javascript通过MetaWeblog获取Blog )。

37:xmlhttp的状态:1 装备阶段、2 发送、3 接收、4 所有数据接收完成。
40:隐藏右上角提示。
41:服务器返回的状态:200 正常返回。 404 网页不存在 等。

45:以HTML格式显示获得的网页。
46:以文本方式显示获得网页源代码。

49-53:截取部分网页显示。

58-60:没有正常获取网页的提示。
----------------------
代码下载:weather.zip

 1 None.gif < HTML >
 2 None.gif < HEAD >
 3 None.gif < TITLE >  天气预报  </ TITLE >
 4 None.gif < META  NAME ="Author"  CONTENT ="http://pharaoh.cnblogs.com" >
 5 None.gif </ HEAD >
 6 None.gif < BODY >
 7 None.gif     <!--
 8 None.gif    XMLHTTP 说明
 9 None.gif    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/7924f6be-c035-411f-acd2-79de7a711b38.asp    
10 None.gif     -->
11 None.gif < div  id =load  style ="display:none; position:absolute;right:0px;top:0px;background:#FF5B5B;border:1px solid" > 正在加载dot.gif </ div >  
12 None.gif
13 None.gif < input  id =wurl  style ="width:500px"  value ="http://appnews.qq.com/cgi-bin/news_qq_search?city=重庆" >
14 None.gif < button  onclick ="GetWeather();" > 加载 </ button >
15 None.gif
16 None.gif < hr  />
17 None.gif < div  id =city > 片断 </ div >
18 None.gif < hr  />
19 None.gif < center >< div  id ="wuhan_weather" > 数据区域 </ div ></ center >
20 None.gif < hr  />
21 None.gif < div  id =stext > 代码区 </ div >
22 None.gif
23 ExpandedBlockStart.gifContractedBlock.gif < script  language ="javascript" > dot.gif
24InBlock.gif
25InBlock.gif var xmlhttp ;
26InBlock.gif function GetWeather()
27ExpandedSubBlockStart.gifContractedSubBlock.gif dot.gif{
28InBlock.gif         window.status = '';
29InBlock.gif         document.all("load").style.display='';
30InBlock.gif     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
31InBlock.gif     xmlhttp.onreadystatechange = getReady;
32InBlock.gif     xmlhttp.Open("GET",document.getElementById('wurl').value,true);
33InBlock.gif     xmlhttp.Send(null);
34ExpandedSubBlockEnd.gif}

35InBlock.giffunction getReady()
36ExpandedSubBlockStart.gifContractedSubBlock.gifdot.gif{
37InBlock.gif    window.status += xmlhttp.readyState+' ';
38InBlock.gif   if(xmlhttp.readyState == 4)
39ExpandedSubBlockStart.gifContractedSubBlock.gif   dot.gif{
40InBlock.gif       document.all("load").style.display='none';
41InBlock.gif     if(xmlhttp.status == 200)
42ExpandedSubBlockStart.gifContractedSubBlock.gif     dot.gif{
43InBlock.gif        var xmlReturn = xmlhttp.responseText;
44InBlock.gif
45InBlock.gif        document.all("wuhan_weather").innerHTML=xmlReturn;
46InBlock.gif        document.all("stext").innerText=xmlReturn;
47InBlock.gif        
48InBlock.gif        
49InBlock.gif        var newText = xmlReturn.replace(/\n+/g,' ');
50InBlock.gif        //document.all("stext").innerText=newText;
51InBlock.gif        var re = /<table .+?table>/ig;
52InBlock.gif        var cityText = newText.match(re);
53InBlock.gif        document.all("city").innerHTML=cityText[2];
54InBlock.gif
55ExpandedSubBlockEnd.gif     }

56InBlock.gif     else
57ExpandedSubBlockStart.gifContractedSubBlock.gif     dot.gif{
58InBlock.gif       document.all("wuhan_weather").innerHTML="<b>出现错误:</b><br />"+new Date()+"<br />"+xmlhttp.statusText+"<br />"+xmlhttp.status;
59InBlock.gif       document.all("stext").innerHTML="代码区";
60InBlock.gif       document.all("city").innerHTML="片断";
61InBlock.gif       
62ExpandedSubBlockEnd.gif     }

63InBlock.gif     xmlhttp = null;
64ExpandedSubBlockEnd.gif   }

65InBlock.gif
66ExpandedSubBlockEnd.gif}

67ExpandedBlockEnd.gif
68None.gif
</ script >
69 None.gif </ BODY >
70 None.gif </ HTML >
71 None.gif

转载于:https://www.cnblogs.com/Pharaoh/archive/2006/03/13/349093.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值