サンプル・プログラム
プログラムの解説:jQuery
  21: <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
プログラムの解説:Wikipedia API
  40: //
  41: // Wikipedia API を呼び出して表示する
  42: //
  43: function WikipediaAPI() {
  44: //検索語
  45: var query = document.getElementById('query').value;
  46: //API呼び出し
  47: $.ajax({
  48: // url: 'http://wikipedia.simpleapi.net/api',
  49: url: 'https://ja.wikipedia.org/w/api.php',
  50: data: {
  51: output: 'json',
  52: keyword: query
  53: },
  54: type: 'GET',
  55: dataType: 'jsonp', //Access-Control-Allow-Origin対策
  56: timeout: 1000,
  57: success: function(json) {
  58: console.log(json);
  59: if (json != null && json.length > 0) {
  60: $('#word').html('');
  61: //結果表示
  62: for (i = 0; i < json.length; i++) {
  63: $('#word').append(
  64: '<dt>' + (i + 1) + ':<a href="' +
  65: json[i].url + '">' +
  66: json[i].title + '</a>' +
  67: ' (' + json[i].datetime +
  68: ' 更新)</dt>' +
  69: '<dd>' + json[i].body + '</dd>'
  70: );
  71: }
  72: } else {
  73: console.log(url);
  74: $('#word').html('検索結果なし');
  75: }
ところが、jQuery から WebAPIを呼び出そうとすると、ブラウザによっては "Access-Control-Allow-Origin" に関わるエラーが出る。
これは、ドメインが異なるサイトのデータを勝手に取得しないようにする仕組みである。サーバ側が対応していないWebAPIではXMLでデータを取得することができなくなる。
回避策としては、取得形式を JSONP に変更することである。
$.ajax に渡すパラメータを変更するだけで、JSONP で取得できるようになる。
取得に成功(success)したら、それに続く関数を逐次実行する。ここでは、画面表示に使っている。
参考サイト
- PHPで「Wikipedia API」を利用する:ぱふぅ家のホームページ
- jQuery:公式サイト
- jQuery 日本語リファレンス
- Wikipedia API
今回は、「PHPで「Wikipedia API」を利用する」をJavaScriptに移植する。