代码改变世界

[原创]js获取天气预报

2007-10-05 20:53  水随风  阅读(3205)  评论(3编辑  收藏  举报

============waterlion======js获取天气预报=========天气预报===========

看到网上的很多朋友做天气预报的时候找webservice,我也找过,不过很难找。
我呢,免得那么麻烦,懒人有懒办法。我就想直接把别人显示出来的天气请求过来用
我用JS做了如下处理

 1         var xmlhttp;
 2             function gb2utf8(data){ //编码转换
 3                var glbEncode = []; 
 4                gb2utf8_data = data; 
 5                execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript"); 
 6                var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2"); 
 7                t=t.split("@"); 
 8                var i=0,j=t.length,k; 
 9                while(++i<j) { 
10                   k=t[i].substring(0,4); 
11                   if(!glbEncode[k])  
12                   { 
13                      gb2utf8_char = eval("0x"+k); 
14                      execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript"); 
15                      glbEncode[k]=escape(gb2utf8_char).substring(1,6); 
16                   } 
17                   t[i]=glbEncode[k]+t[i].substring(4); 
18                } 
19                gb2utf8_data = gb2utf8_char = null; 
20                return unescape(t.join("%")); 
21             } 
22             function createXmlHttp()
23             {
24                 if(window.ActiveXObject)
25                 {
26                     xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
27                 }
28                 if(window.XMLHttpRequest)
29                 {
30                     xmlhttp = new XMLHttpRequest();
31                 }
32             }
33             function sendxmlHttp(weathercity)
34             {
35                 if(!weathercity)
36                 {
37                     httpstr="http://weather.tq121.com.cn/mapanel/index1.php?city=荆州"    
38                 }
39                 else
40                 {
41                     httpstr="http://weather.tq121.com.cn/mapanel/index1.php?city="+weathercity;
42                 }
43                 createXmlHttp();
44                 xmlhttp.open("GET",httpstr,true);
45                 xmlhttp.onreadystatechange=callback;
46                 xmlhttp.send(null);
47             }
48             function selectcity()
49             {
50                 sendxmlHttp(document.getElementById("txt").value);
51             }
52             function callback()
53             {
54                 if(xmlhttp.readyState==4)
55                 if(xmlhttp.status==200)
56                 {
57                     var TextDoc=gb2utf8(xmlhttp.responseBody);
58                     //var pat = /[^\x00-\xff]+/g; //这个是双字节的。就是说带标点符号
59                     var pat =/"weather">[\u4e00-\u9fa5]+<\/td>/; //这个好象带中文的。
60                     var pat1 =/"weatheren">\S*<\/td>/; //这个好象带中文的。
61                     var pat2=/<span class="big-cn">[\u4e00-\u9fa5]+<\/span>/
62                     var str="<div id="+TextDoc.match(pat);
63                     var str1="<div id="+TextDoc.match(pat1);
64                     var str2=TextDoc.match(pat2);
65                     var patt1=/td/g;
66                     document.getElementById("test").innerHTML=str2+str.replace(patt1,"div")+str1.replace(patt1,"div");        
67                 }
68             }
69        
由于我请求过来的信息中显示出来是乱码,所以我做了编码转换

这个写的是比较麻烦,但是比要找webservice好多了哈~~~

============waterlion======js获取天气预报=========天气预报===========


代码下载:weather.rar