ってことをやろうと思ったんだけど、時間がないので、今回は、仕様とソース。
次回以降で説明を書きます。
■仕様
リクルートの提供APIのなかに、「じゃらん宿API」というのがある。
ここ http://www.recruit.jp/mashup2006/api_jalan.html
ただし、詳しい内容は、実際には、以下のところにある。
じゃらんWebサービス
http://jws.jalan.net/ws/viw/U00001
で、じゃらんWebサービス/チュートリアル/あるエリアの宿泊施設を検索するフォームを作成する
の内容を元に、
「東京都:130000、お台場・汐留・新橋・品川:137100、お台場・汐留・竹芝:137102」
地域のデータを取得し、テキストエリアにホテル名と住所をいれよ。
参考:発行するURLは、以下のとおりとなる
http://jws.jalan.net/APILite/HotelSearch/V1/?key=guest&pref=130000&l_area=137100&s_area=137102
■ソース
以下のとおり
<?xml version="1.0"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>AJAX版?じゃらん読み取りだよ</title> <script language="javascript" type="text/javascript"> var httpObj; var timer; // タイムアウト用 //*==============================================// //* 関数:httpRequest() *// // 内容:XML読み取り開始 *// //*==============================================// function httpRequest(target_url) { try { if(window.XMLHttpRequest) { httpObj = new XMLHttpRequest(); } else if(window.ActiveXObject) { httpObj = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert('エラーです'); return; } } catch(e) { alert('エラーです'); return; } // タイマーセット timer = setInterval("timeoutError()",60000); //60秒にセット // データを取得する httpObj.open("GET", target_url, true); httpObj.onreadystatechange = DataRead; httpObj.send(""); return; } //*==============================================// //* 関数:timeoutError() *// // 内容:タイムアウト *// //*==============================================// function timeoutError() { clearInterval(timer); // タイマーとめる httpObj.abort(); alert('タイムアウトです'); } //*==============================================// //* 関数:DataRead() *// // 内容:XML読み取ったあと *// //*==============================================// function DataRead() { if ( httpObj.readyState == 4 ) { clearInterval(timer); // タイマーとめる if ( httpObj.status == 200) { DataOut(); } } } //*==============================================// //* 関数:DataOut() *// // 内容:書き出し *// //*==============================================// function DataOut() { // 返り値XMLの取得 xtree = httpObj.responseXML; // ホテルリストの取得 hotellist = xtree.getElementsByTagName("Hotel"); // 書き出し buf = ""; for(i = 0 ; i < hotellist.length ; i ++ ) { // 1件分のホテルデータ取り出し hotelnode = hotellist[i]; // 各種データ取り出し HotelName = hotelnode.selectSingleNode("HotelName").nodeTypedValue; HotelAddress = hotelnode.selectSingleNode("HotelAddress").nodeTypedValue; // 書き出し buf = buf + "¥n" + HotelName + " " + HotelAddress; } document.form1.textarea1.value = buf; } </script> </head> <body bgcolor="#ffffff" onload="httpRequest('http://jws.jalan.net/APILite/HotelSearch/V1/? key=guest&pref=130000&l_area=137100&s_area=137102')"> <form action="" name="form1"> <textarea name="textarea1" rows="15" cols="80"></textarea> </form> </body> </html> |
(上記 < > ¥ は本当は半角)
■説明
今度、気が向いたときします(DataOut以外の関数は、こことおなじなので、そのDataOutの中だけ説明します。)
