デ辞蔵API詳細→http://dejizo.jp/dev/rest.html
jQueryを使用して以下ブログ記事に記載のコードでAPIを呼びだしています。
http://hogesuke.hateblo.jp/entry/2013/06/04/043252
FireBugsのネットタブで確認するとステータスコード200が返ってきているようですが、errorのfunctionに入ってしまいます。
その理由として関係するか分かりませんが、FireBugsで受信しているXMLを確認すると以下のようなメッセージが表示されます。
・XML パースエラー: 整形式になっていません。 URL: moz-nullprincipal:
実装方法が誤っているのでしょうか?お教え願います。
jQuery.ajax で使われている XMLHttpRequest って、(基本的に)ドメインをまたがって使えないんです。
はてなブログに書かれているスクリプトは、http://public.dejizo.jp/ に置いてあるページ内では動くんですが、別のサイトに置かれていると、ステータスは 200 で、空っぽの応答が返ります。
# コメントで、Lhankor_Mhy さんが「クロスドメイン制約」と書いているのが、それです。
いくつか対応のしようはあるのですが、ここに書かれている方法が一番簡単じゃないかと思います。
http://www.fisproject.jp/2012/02/%E7%B0%A1%E5%8D%98%E3%81%AA%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%88%B6%E7%B4%84%E3%81%AE%E7%AA%81%E7%A0%B4/
例えば、先のページにある↓から、jquery.xdomainajax.js をダウンロードして、自サーバに置いたとします。
https://github.com/padolsey/jQuery-Plugins/blob/master/cross-domain-ajax/jquery.xdomainajax.js
<script src="/js/jquery-1.9.1.js"></script> <!-- ★ jquery を読み込んだ後に、jquery.xdomainajax.js を読み込む --> <script src="/js/jquery.xdomainajax.js"></script> <script type="text/javascript"> ... // はてなブログにあるコード、そのまんま $.ajax({ url: 'http://public.dejizo.jp/NetDicV09.asmx/SearchDicItemLite?Dic=wpedia&Word=a&Scope=HEADWORD&Match=CONTAIN&Merge=AND&Prof=XHTML&PageSize=10&PageIndex=0', type: 'GET', dataType: 'xml', timeout: 10000, success: function(data){ // ★ responseText に、検索結果の HTML が入っているのが分かると思います。 console.log(data.responseText); }, error: function(){ } }); </script>