PHP通過氣象局開放API查詢指定城市(區縣)天氣
具體應用說不上,寫這個功能純粹為了好玩,可能在網站的小掛件里沒準能用上這樣的功能,或者一些生活類網站比較適用,在正式進入本話題之前,必須要通過PHP將JSON格式省市(區)二級數據插入數據庫,才能進行接下來的天氣查詢操作,所謂巧婦難為無米之炊,斯理也。在完成省市信息入庫之后,理一下實現思路:前臺通過搜索框執行ajax請求,后臺根據城市名稱查詢城市編碼,然后通過城市編碼組裝成API接口獲取該城市天氣信息,返回到前臺,其實還是很簡單的,代碼如下:
1.前臺代碼 weather.php:
<?php/* * author:phpxs.com * website: * url:http://www.phpxs.com/post/2945 */?><script type='text/javascript'src='http://www.aoyou183.cn/uploads/201502/02/14228784541.js'></script><input type='text' name='city'/><button onclick='queryWeather();'>查詢</button><div id='show'></div><script type='text/javascript'> function queryWeather(){$.post(’getweather.php’, {city: $('#city_name').val()}, function(data) { //optional stuff to do after success var weather = data.weatherinfo.weather1; var temp = data.weatherinfo.temp1; $('#show').html(weather+','+temp); },’json’); }</script>
2.后臺代碼 getweather.php:
<?php/** author:phpxs.com* website:* url:http://www.phpxs.com/post/2945*/if (isset($_POST[’city’])) { $city = $_POST[’city’]; //通過城市名稱獲取城市ID $pdo = new PDO(’mysql:host=localhost;dbname=test;charset=utf8’,’root’,’root’); $stmt = $pdo->prepare(’SELECT id FROM city WHERE name=:name’); $stmt->bindParam(’:name’,$city); $stmt->execute(); $cid = $stmt->fetchColumn(); //通過城市ID獲取城市天氣詳情 $api = 'http://m.weather.com.cn/data/'.$cid.'.html'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, ’Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.1 Safari/537.11’); $ret = curl_exec($ch); curl_close($ch); //返回獲取json格式結果 echo $ret;}else{ echo ’請輸入要查詢的城市名!’;}?>
3.效果演示:
相關文章: