首页 > 开发 > AJAX > 正文

Ajax基本原理讲解

2024-07-21 02:29:30
字体:
来源:转载
供稿:网友

这段时间在学习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<html>
 2<head>
 3<title> 天气预报 </title>
 4<meta name="author" content="http://pharaoh.cnblogs.com">
 5</head>
 6<body>
 7    <!--
 8    xmlhttp 说明
 9    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/7924f6be-c035-411f-acd2-79de7a711b38.asp   
10    -->
11<div id=load >正在加载</div>
12
13<input id=wurl value="http://appnews.qq.com/cgi-bin/news_qq_search?city=重庆">
14<button >加载</button>
15
16<hr />
17<div id=city>片断</div>
18<hr />
19<center><div id="wuhan_weather">数据区域</div></center>
20<hr />
21<div id=stext>代码区</div>
22
23<script language="javascript">
24
25 var xmlhttp ;
26 function getweather()
27 {
28         window.status = '';
29         document.all("load").style.display='';
30     xmlhttp = new activexobject("msxml2.xmlhttp");
31     xmlhttp.onreadystatechange = getready;
32     xmlhttp.open("get",document.getelementbyid('wurl').value,true);
33     xmlhttp.send(null);
34}
35function getready()
36{
37    window.status += xmlhttp.readystate+' ';
38   if(xmlhttp.readystate == 4)
39   {
40       document.all("load").style.display='none';
41     if(xmlhttp.status == 200)
42     {
43        var xmlreturn = xmlhttp.responsetext;
44
45        document.all("wuhan_weather").innerhtml=xmlreturn;
46        document.all("stext").innertext=xmlreturn;
47       
48       
49        var newtext = xmlreturn.replace(//n+/g,' ');
50        //document.all("stext").innertext=newtext;
51        var re = /<table .+?table>/ig;
52        var citytext = newtext.match(re);
53        document.all("city").innerhtml=citytext[2];
54
55     }
56     else
57     {
58       document.all("wuhan_weather").innerhtml="<b>出现错误:</b><br />"+new date()+"<br />"+xmlhttp.statustext+"<br />"+xmlhttp.status;
59       document.all("stext").innerhtml="代码区";
60       document.all("city").innerhtml="片断";
61      
62     }
63     xmlhttp = null;
64   }
65
66}
67
68</script>
69</body>
70</html>
71

菜鸟学堂:
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表