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:

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2013/06/05 00:34:29
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:a-kuma3 No.1

回答回数4971ベストアンサー獲得回数2153

ポイント300pt

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>
id:hogesuke_1

親切にありがとうございます。

2013/06/05 00:34:05
  • id:Lhankor_Mhy
    補足願いたいのですが、クロスドメイン制限はどのように回避しようとしてるのですか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません