??? 中國天氣網(wǎng)提供了一些查詢天氣的API,訪問時(shí)返回天氣信息的JSON格式數(shù)據(jù),解析就可以得到天氣信息:
http://www.weather.com.cn/data/sk/101281601.html
http://www.weather.com.cn/data/cityinfo/101281601.html
http://m.weather.com.cn/data/101281601.html
后面一串?dāng)?shù)字為城市代碼。
?返回的utf-8字符串
{"weatherinfo":{"city":"東莞","cityid":"101281601","temp":"22","WD":"東風(fēng)","WS":"1級","SD":"90%","WSE":"1","time":"08:20","isRadar":"0","Radar":""}}
?所以首先要將城市名轉(zhuǎn)換為城市代碼,最簡單的辦法是通過讀取一個(gè)文本文件來獲?。?/p>
格式如:
101010100=北京 101010200=海淀 101010300=朝陽 101010400=順義 101010500=懷柔 101010600=通州 101010700=昌平 101010800=延慶 101010900=豐臺 101011000=石景山 101011100=大興
?
文本文件和PHP文件放在同一目錄下;<meta http-equiv="content-type" content="text/html; charset=utf-8"> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script src="http://libs.baidu.com/bootstrap/2.0.4/js/bootstrap.min.js"></script> <link href="http://libs.baidu.com/bootstrap/2.0.4/css/bootstrap.min.css" rel="stylesheet"> <title>天氣查詢簡單版</title>
警告!
發(fā)生錯(cuò)誤了親,您輸入的城市好像沒有找到哦!實(shí)時(shí)天氣信息 | 城市: | ".$info["city"]." | "; echo "
---|---|
城市ID: | ".$info["cityid"]." |
氣溫: | ".$info["temp"]."℃ |
風(fēng)向: | ".$info["WD"]." |
風(fēng)力: | ".$info["WS"]." |
濕度: | ".$info["SD"]." |
更新時(shí)間: | ".$info["time"]." |

方法二:
01|北京,02|上海,03|天津,04|重慶,05|黑龍江,06|吉林,07|遼寧,08|內(nèi)蒙古,09|河北,10|山西,11|陜西,12|山東,13|新疆,14|西藏,15|青海,16|甘肅,17|寧夏,18|河南,19|江蘇,20|湖北,21|浙江,22|安徽,23|福建,24|江西,25|湖南,26|貴州,27|四川,28|廣東,29|云南,30|廣西,31|海南,32|香港,33|澳門,34|臺灣2.?這時(shí),我們就知道了省份的代碼;城市的代碼是在省份的基礎(chǔ)上擴(kuò)展的,知道省份代碼是第一步;同時(shí)我們也知道了省份名,這樣,做下拉框讓用戶選地區(qū)也很簡單:
2901|昆明,2902|大理,2903|紅河,2904|曲靖,2905|保山,2906|文山,2907|玉溪,2908|楚雄,2909|普洱,2910|昭通,2911|臨滄,2912|怒江,2913|迪慶,2914|麗江,2915|德宏,2916|西雙版納?3.但是,這樣還不夠,我們還需要繼續(xù)縮小范圍,比如我們要知道大理州有哪些縣級市和縣,就需要繼續(xù)訪問:
290201|大理,290202|云龍,290203|漾濞,290204|永平,290205|賓川,290206|彌渡,290207|祥云,290208|巍山,290209|劍川,290210|洱源,290211|鶴慶,290212|南澗?4.這時(shí)雖然可以找到所有城市名,但這個(gè)代碼還不是最終的城市代碼,所以還要再來一次,不如說要找賓川的代碼:
290205|101290205?至此,讀了四次,城市名和城市代碼已獲取到。
<?php echo file_get_contents($_GET['url']); ?>?一個(gè)使用Ajax的js文件:
function Ajax(recvType) { var aj = new Object(); aj.recvType = recvType ? recvType.toUpperCase() : 'HTML'//HTML XML aj.targetUrl = ''; aj.sendString = ''; aj.resultHandle = null; aj.createXMLHttpRequest = function() { var request = false; //window對象中有XMLHttpRequest存在就是非IE,包括(IE7,IE8) if (window.XMLHttpRequest) { request = new XMLHttpRequest(); if (request.overrideMimeType) { request.overrideMimeType("text/xml"); } //window對象中有ActiveXObject屬性存在就是IE } else if (window.ActiveXObject) { var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP']; for (var i = 0; i ?網(wǎng)頁部分代碼: <div class="iteye-blog-content-contain" style="font-size: 14px;"> <pre name="code" class="html"> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script src="http://libs.baidu.com/bootstrap/2.0.4/js/bootstrap.min.js"></script> <link href="http://libs.baidu.com/bootstrap/2.0.4/css/bootstrap.min.css" rel="stylesheet"> <title>實(shí)時(shí)氣溫信息</title> <script type="text/javascript" src="./ajax.js"></script> <script type="text/javascript"> function str2Array(data) { data = data.replace(/\|/g, "\":\""); data = data.replace(/,/g, "\",\""); data = '({\"' + data + '\"})'; return eval(data); } function getProvince() { var ajax = Ajax(); ajax.get("getstr.php?url=http://m.weather.com.cn/data5/city.xml", function(data) { var arr = str2Array(data); var prov = document.getElementById("province"); for (var p in arr) { prov.options.add(new Option(arr[p], p)); } prov.options.selectedIndex = 0; getCity(prov.value); }); } function getCity(provId) { var ajax = Ajax(); ajax.get("getstr.php?url=http://m.weather.com.cn/data5/city" + provId + ".xml", function(data) { var arr = str2Array(data); var city = document.getElementById("city"); for (var i = city.options.length; i >= 0; i--) { city.remove(i); } for (var p in arr) { city.options.add(new Option(arr[p], p)); } getTown(city.value); }); } function getTown(provId) { var ajax = Ajax(); ajax.get("getstr.php?url=http://m.weather.com.cn/data5/city" + provId + ".xml", function(data) { var arr = str2Array(data); var town = document.getElementById("town"); for (var i = town.options.length; i >= 0; i--) { town.remove(i); } for (var p in arr) { town.options.add(new Option(arr[p], p)); } getCityId(); }); } function getCityId() { var ajax = Ajax(); var index = document.getElementById("town").value; ajax.get("getstr.php?url=http://m.weather.com.cn/data5/city" + index + ".xml", function(data) { var arr = str2Array(data); cityId = arr[index]; showWeather(cityId); }); } function insertTab(tab, cel1, cel2) { var newRow = tab.insertRow(tab.rows.length); var cell = newRow.insertCell(0); cell.innerHTML = cel1; var cell = newRow.insertCell(1); cell.innerHTML = cel2; } function showWeather(cityId) { if (cityId == null) { return; } var ajax = Ajax(); ajax.get("getstr.php?url=http://www.weather.com.cn/data/sk/" + cityId + ".html", function(data) { data = '(' + data + ')'; var info = eval(data)["weatherinfo"]; var tab = document.getElementById("weather"); var len = tab.rows.length; while(len-- > 0){ tab.deleteRow(len); } insertTab(tab, "城市:", info["city"]); insertTab(tab, "城市ID:", info["cityid"]); insertTab(tab, "氣溫:", info["temp"] + "℃"); insertTab(tab, "風(fēng)向:", info["WD"]); insertTab(tab, "風(fēng)力:", info["WS"]); insertTab(tab, "濕度:", info["SD"]); insertTab(tab, "更新時(shí)間:", info["time"]); }); } getProvince(); </script> <style type="text/css"> select { width: 100px; } </style> <div style="margin: 20px"> <legend> Weather </legend> <br> <select id="province" onchange="getCity(this.value)"></select> <select id="city" onchange="getTown(this.value)"></select> <select id="town" onchange="getCityId()"></select> <br> <table id="weather" class="table table-striped table-bordered" style="width: 310px"></table> </div>?運(yùn)行結(jié)果:

?

?完。