人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

REST版デ辞蔵APIをajaxで呼びだす方法を教えてください。
デ辞蔵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:

実装方法が誤っているのでしょうか?お教え願います。

●質問者: hogesuke
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●300ポイント

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>

hogesukeさんのコメント
親切にありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ