なぜなら Ajax での通信は、同一ドメイン内のファイルにしかアクセスできないようになっているためです。
これまで使ってみた楽天ウェブサービスのプログラムは、あなたのWebサイトとは別のドメインなので、JavaScriptで直接利用することができないのです。
そのため今回は中継プログラムを作って、楽天ウェブサービスを間接的に利用する方法について説明します。
中継プログラムには、サーバーサイドで動くプログラミング言語が使われます。一番簡単なのは、多くのレンタルサーバーで動作する PHP を使う方法です。
中継プログラムを作るだけなら、PHPの知識は最小限で済みます。とても簡単なので、実際に作ってみましょう。
【1】今回は最終的に、以下のようにファイルを配置します。

*ItemSearch.php は SHIFT-JIS 形式で保存してください。
*「\」はWindowsでは円記号のことです。
保存先 C:\phpdev\www\rakuten\lib
ファイル名 ItemSearch.php
<?php
extract($_GET);
//固定のフィールド
$url = "http://api.rakuten.co.jp/rws/1.9/rest?";
$url .= "developerId=あなたのdeveloperId";
$url .= "&affiliateId=あなたのaffiliateId";
$url .= "&operation=ItemSearch";
$url .= "&version=2007-10-25";
//変化するフィールド
$url .= "&keyword=".rawurlencode($keyword);
$url .= "&hits=".$hits;
$url .= "&page=".$page;
$url .= "&sort=".rawurlencode($sort);
$url .= "&imageFlag=".$imageFlag;
header("Content-type: application/xml");
readfile($url);
?>
プログラムの準備ができたら実行してみましょう。
【2】C:\phpdev フォルダ内にある「2K-NT-XP-phpdev_start.bat」をダブルクリックして、phpdev を起動します。

【3】この段階で Apache、PHP、MySQL が使えるようになっています。

【4】Webブラウザを起動して、「localhost」にアクセスすると、以下のような画面が表示されます。
http://localhost/

この画面が表示できれば、Webサーバーがちゃんと使える状態です。
【5】次は作成した中継プログラムにアクセスしてみます。
http://localhost/rakuten/lib/ItemSearch.php?

まだ URLにパラメーターを指定していないので、商品データは取得できませんが、楽天ウェブサービスに間接的にアクセスできていることがわかります。
【6】今度はパラメーターを含めてアクセスしてみましょう。
・例
検索キーワードは「カニ」、1ページあたりデータを10件取得して、その1ページ目を表示、価格が安い順に並べ替えて、商品画像ありの商品だけを対象とするという意味
http://localhost/rakuten/lib/ItemSearch.php?
&keyword=%E3%82%AB%E3%83%8B
&hits=10
&page=1
&sort=%2BitemPrice
&imageFlag=1
*実際に入力する時は改行しないで1行にしてください。

今度はちゃんとデータを取得できましたね。パラメーターとして渡した値も表示されています。
【7】条件をいろいろ変えて、データを取得する練習をしてください。
keyword 検索キーワード
hits 1ページあたりの取得件数
page 取得ページ
sort ソート
imageFlag 商品画像有無フラグ
検索キーワードとソートは以下のリンクでエンコードしてから使います。
・エンコード・デコード
【解説】
(1)中継プログラム ItemSearch.php は、楽天ウェブサービスを間接的に利用するために、URLで指定したパラメーターを受け取って、再度組み立てています。
実際にデータを表示しているのは1行だけです。
readfile($url);
詳しくは Ajax初心者入門講座 で解説しています。
(2)今回の中継プログラムには、最低限のパラメーターしか書いていませんが、必要に応じてパラメーターを増やしてください。
どんなパラメーターが使えるかは、楽天ウェブサービスのオンラインドキュメントに詳しく書かれています。必須項目と指定しなかったときにデフォルト値がある点がポイントです。
http://webservice.rakuten.co.jp/api/itemsearch/
(3)中継プログラム側で受け取るパラメータを増やした場合は、必ずURLにパラメータを含めないとエラーになります。PHPのプログラムで回避することはできますが、ここでは省略します。
(4)developerId、affiliateId、operation、version のパラメーターは、あまり変わることがありません。そのため中継プログラムの中に直接書くようにしたので、URLに含めなくてもよくなりました。