ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

玉砕中

javascript、やれば出来るだろうとかタカを括ってました。
jsonpの使い方がイマイチ理解できない…

node.jsでjsonファイルの読み込みは ”require" でOK

http://qiita.com/_shimizu/items/db463c1ce94a4ca4659f

  • test.json
{
   "J":5,
   "0":"N"
}
  • load_json.js
var json = require('./test.json');
console.log(json);
  • 実行結果
$ node load_json.js
{ '0': 'N', J: 5 }

なら jsonp もイケる?

  • test2.json
callback(
  {
   "J":5,
   "0":"N"
  }
);
var json = require('./test2.json');
console.log(json);
  • 実行結果
$ node load_jsonp.js

module.js:483
    throw err;
          ^
SyntaxError: test.json: Unexpected token c
    at Object.parse (native)
    at Object.Module._extensions..json (module.js:480:27)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object.<anonymous> (load_jsonp.js:1:74)
    at Module._compile (module.js:454:26)
    at Object.Module._extensions..js (module.js:472:10)
    at Module.load (module.js:356:32)

jsonp は無理でした。

node.js で読み込む場合の callback(〜); の扱いがワカラナイ…

ITpro EXPO 2013

ひょんなことからITpro EXPO 2013に参加できそうな気配。
が、なんかサイトが見辛いので、自分用に情報を抽出してみる。

出展企業がわかりにくい。

時間的制約からセミナーに参加するのがムツカシイので、ブースを攻めることを画策。

全部興味あるけど、どこに何があって何をやっているのか、フラットに並べたいけど一覧される画面が(ぱっと見て)見当たらない。出展社一覧が小間番号順にソートできればフロアマップと照らし合わせやすいんでね〜かな、と思い立ったが吉日。
https://exponet.nikkeibp.co.jp/itev2013/exhibitor/company_index.html を見たら、出展社情報は json ファイルを読み込んでいるらしいのでとりあえず手当たり次第 GET。

curl でダウンロード

$ curl -f -k https://exponet.nikkeibp.co.jp/itev2013/exhibitor/itev/list/ja/company/[1-500].json -o "#1.json"

欠番があるらしく 、1〜500まで回して 262件という結果になりました。
262件のjsonファイルをマージしてリストを作れば良いんじゃね?ということでなんか良い方法ないかなー。

スマートな方法が思いつかないので jsonデータから必要項目を抜く ajax を作ってみた。

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<title>一覧</title>
<script type="text/javascript" src="jquery-2.0.2.min.js"></script>
<script type="text/javascript" src="jsrender.js"></script>
<script type="text/javascript">
var docurl = './json/';
$(function () {
    $('#tbl').append('<table border="1" cellspacing="1" cellpadding="1">');
    for ( var x =0; x < 500; ++x ) {
        getData(x);
    }
    $('#tbl').append('</table>');
} );
function getData(id) {
    $.ajax ( {
        dataType: 'jsonp',
        jsonpCallback: 'callback',
        url: docurl + id + '.json',
        async: false,
        success: function (json) {
            $('#tbl').append(
                $('#tpl').render(json)
            );
        }
    } );
}
</script>
<script id="tpl" type="text/x-jsrender">
<tr>
<td>{{:ID}}</td>
<td>{{:booth_number}}</td>
<td>{{:exhibit}}</td>
<td>
{{if url}}<a href="{{:url}}">{{/if}}
{{:contact_name_ja}}
{{if url}}</a>{{/if}}
</td>
<td>
<b>{{:catch}}</b><p>{{:summary}}</p>
</td>
<td>
{{for service}}
<b>【{{:title}}】</b><p>{{:summary}}</p>
{{/for}}
</td>
</tr>
</script>
</head>
<body>

<div id="tbl"></div>

</body>
</html>

ブラウザ上に一覧したけど、ソートとか加工できないと意味ないな…

考え中