关闭

JS 获取天气预报

2259人阅读 评论(0) 收藏 举报

============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

     

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17724次
    • 积分:278
    • 等级:
    • 排名:千里之外
    • 原创:8篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条