|
  
AjaxでJSONPを使う |
|
Sec.1 JSONPで別ドメインからデータを取得する ここではJqueryを使いHeartRailより駅の情報を取得します。 JqueryはPrototypeと並んで有名なフレームワークになります。 Jqueryは↑のメニュよりダウンロードできます。 ここで扱うJSON形式のフォーマットはこちらです。 選択された駅の情報を表示させます。 【サンプル】 <html> <head> <script type="text/javascript" src="http://express.heartrails.com/api/express.js"></script> <script type="text/javascript" src="./js/jquery.js"></script>//①Jqueryをインクルードします </head> <script> function geteki() { //②Jqueryでフォームの内容を取得します var ekiline = $(line).val(); var ekiname = $(station).val(); //③クエリー文字列を生成します var param = { name: ekiname, jsonp: 'callbacks', encoding: 'UTF-8' }; var search = jQuery.param(param); var url = 'http://express.heartrails.com/api/json?method=getStations&'+search; //④JSONPを呼び出します var script = document.createElement( 'script' ); script.type = 'text/javascript'; script.charset = param.encoding; script.src = url; document.body.appendChild( script ); } function callbacks (res) { $('#result').empty(); //⑤検索結果が0件の場合はエラーを表示して終了します if ( res.Count-0 == 0 ) { alert( '見つかりませんでした。' ); return; } //⑥データを表示させるテーブルを作成します var table = document.createElement( 'table' ); var tbody = document.createElement( 'tbody' ); table.appendChild( tbody ); $('#result').append( table ); //⑦取得したデータを編集します for( var i=0; i<res.response.station.length; i++ ) { var entry = res.response.station[i]; var tr = document.createElement( 'tr' ); tbody.appendChild( tr ); var tddate = document.createElement( 'td' ); $(tddate).text("線区は:"+entry.line+" ||駅名は:"+ entry.name+" ||前の駅は"+ entry.prev+" ||次の駅は"+entry.next); tr.appendChild( tddate ); } } </script> <body onload="HRELoadArea('area', 'line', 'station');"> <select id="area" name="area" onchange="HREOnChangeArea();"> <option value="エリアを選択してください">エリアを選択してください</option> </select> <select id="line" name="line" onchange="HREOnChangeLine();"> <option value="路線を選択してください">路線を選択してください</option> </select> <select id="station" name="station" onchange="geteki();"> <option value="駅を選択してください">駅を選択してください</option> </select> <p id="result"></p> </body> </html> いかがでしょうか。CGIファイルを使うことなく、直接、別のドメインからデータを取得できました JSON形式のデータはその扱い易さから、多くのサイトで取り入れられています。 Point1: 別のドメインから直接データを取得できる(セキュリティ上の問題もあり機密情報は扱うべきでない) Point2: Json形式のデータはXMLよりも扱い易い |