Ajax楽天ウェブサービスの商品データ取り出しについて。

【講座名】
Ajax初心者入門講座楽天ウェブサービス初心者入門講座 に関する質問

【質問】
楽天ウェブサービス初心者入門講座のstep11なんですが、
楽天ウェブサービスから商品データを取得して、
sample002で確認すると、
https://rakutenweb.up.seesaa.net/image/rakuten-68.gif
にきちんと表示されました。

それで質問なんですが、
取り出した商品データーが表示されてる順番に商品一つ一つの
XMLを取り出すことはできないのでしょうか?

商品データーのXMLを取り出すことはstep2で理解できます。

ただそれから自分の必要な値を取り出し、
取り出した値を使って、
HTMLを組み立てたソースをどのようにして作れば良いか、
まったく検討もつきません。

本当にまったくの素人の質問ですいません。

お手数ですがよろしくお願いします。

【回答】
(1)商品ごとの詳細なXMLを取り出すAPIは別にあります。
楽天商品コード検索API
http://webservice.rakuten.co.jp/api/itemcodesearch/

(2)取り出した商品データを使ってHTMLを組み立てる方法は、
講座のステップを進めていくうちに理解できます。

ps:
ちなみにプログラムで組み立てたパラメータで返されるXMLを表示したいなら、
HTML側に1行追加して

<div id="state2"></div>



item.js側に、paramListの組み立てが終わった後に1行追加する

$('state2').innerHTML = paramList


これで組み立てられたURLが表示されるので、
コピーしてブラウザのアドレスに貼り付ければXMLが表示できます。

楽天ウェブサービスを携帯サイトで使用できますか?

【講座名】
楽天ウェブサービス初心者入門講座 に関する質問

【質問】
はじめまして、こんばんは。

大変貴重な情報の提供をして頂き心から感謝しております。

貴サイトのお陰で楽天ウェブサービスに関しての勉強が出来て本当に感謝しています。

ひとつ御質問があります。

貴サイトの内容に沿って色々と勉強させて頂き、PC版の楽天ウェブサービスは作成する事が出来るようになりました。

本当にありがとうございました。

その上でのご質問なのですが、実は私は携帯サイトで楽天ウェブサービスを利用したかったのですが作成してパソコン上で正常に表示されたURLを携帯に送ったところ、全く動いてくれません。

それもその筈、携帯サイトではJavascriptは動作しなかったのですね・・・

見も知らずの方に、このようなお願いを申しあげるのは大変厚かましい事は承知の上でのお願いなのですがJavascriptを使用せず、携帯サイトで楽天ウェブサービスを運用する為の方法はありますでしょうか?

もしも宜しかったら教えて頂きたいのですが・・・

御多忙の事とは存じますが、ご回答頂けたら幸いです。

何卒よろしくお願い申し上げます。

【回答】
結論から言うと、携帯サイトでも楽天ウェブサービスを活用したWebページは可能です。

方法はいろいろありますが、よく使われているのは、PHPを使う方法です。

ご指摘のように、携帯ではJavaScriptは動作しません。

しかし「出力結果がHTML」なら、ファイルの拡張子が「.php」でも表示できます。

つまりサーバー側のプログラムで処理を行ない、HTMLを組み立てて、結果としてHTMLだけ返すようにすれば、携帯でも表示できるわけです。

もちろん携帯で表示できるHTMLだけにする必要はありますが。

PHPはサーバー側で動くプログラミング言語です。PerlやJavaなど、他の言語でも同様に可能です。

【必要な知識】
(1)動的なWebサイトの場合
PHPでXMLを受信し、解析などの処理を行い、結果をHTMLとして出力するプログラムの知識が必要です。

(2)静的なWebサイトの場合
PC版と同じ手順でXMLを取得して、そのデータにHTMLタグを加えて、携帯用のホームページを作ることが可能です。

編集には、Excelを活用すると便利です。

Excelの計算式や関数を使い、データをHTMLタグの中に置換すれば、効率的に作成できます。

これは携帯サイトだけでなく、PC版でも有効な方法です。

【Webアプリ開発サポートサービス】
当講座では、出来るだけ読者様自身がプログラミング出来るようになることを目指して、情報を公開しています。

でも中には、作ってもらったほうが手っ取り早いという人もいます。

そんな方のために、有償ですが、WebサービスAPIを活用したシステムの 開発サポートサービス を行なっています。

ご希望のWebアプリを作成することができます。よかったらご覧ください。

楽天ウェブサービス レンタルサーバーにアップロードすると、動かないことについて。

【講座名】
楽天ウェブサービス初心者入門講座 に関する質問

【質問】
サンプルプログラムを、無料レンタルサーバーの land.to にて動かそうと、アップロードしたところ、「データが見つかりませんでした」となりました。

これは、サーバー側の問題と捉えてよろしいでしょうか?

ただし、 Ajax初心者入門講座 のサンプルプログラムは、すべて動作したのですが・・・

ご無理を申しまして申し訳ございません。
よろしくお願いいたします。

【回答】
サンプルプログラムをレンタルサーバーで動かすには、レンタルサーバーが PHPに対応している必要があります。

しかし PHPが使えても、レンタルサーバーによっては、そのままでは動かないケースがあります。

それは以下のことなどが関係しているようです。
・PHPのバージョン
・php.iniの設定
・レンタルサーバーでの制限

プログラムを開発した環境とレンタルサーバーで、PHPのバージョンが違うと、使える関数が異なることがあります。

またレンタルサーバーでは、ユーザーが php.ini を自由に設定できないことが多いです。セキュリティ上、外部のサーバーと通信できないようになっていることもあります。

このような場合、一番簡単な解決方法は、レンタルサーバーを変更することです。それだけで動きます。

ちなみに私は ロリポップ! を使っていますが、問題なく動いています。

もしかしたら land.toでも設定を変えるだけで、動くかもしれません。でも個々のレンタルサーバーについては、詳しく知らないので、レンタルサーバーのヘルプなどで調べてみてください。

【補足】
その後、読者様からのメールで、違うレンタルサーバーで試したところ、無事動作確認が出来たようです。

関連する記事もご覧ください。
Ajax readfile関数とセキュリティについて


楽天ウェブサービス 検索キーワードを変更しても、同じ商品しか表示されない場合について。

【講座名】
楽天ウェブサービス初心者入門講座 に関する質問

【質問】
はじめまして。

御サイトにて色々な情報を提供してくださり、大変感謝いたしております。

申し訳ございませんが、楽天ウェブサービスのキーワード検索について、質問が御座います。

ItemSearch.phpにて、検索ワードを指定して表示する方法は分かりました。

その後、sample2,3,4,5と進めていくうちに、検索キーワードボックスにどのような文字を入力しましても、ItemSeach.phpにて指定した検索ワード(エンコードしているもの)しか検索結果に表示されません。

検索キーワードボックスに入力したワードを検索に使うためには、ItemSearch.phpの中をsample1とsample4,5では変更する必要があるのでしょうか?

お忙しいとは存じますが、ご回答のほどよろしくお願いいたします。

【回答】
ご質問の内容で、「ItemSeach.phpにて指定した検索ワード」という部分がありますが、 ItemSeach.php側では、キーワードを指定しないので、その辺りが気になります。

まず、「ItemSearch.php」で、キーワードの部分が、以下のようになっているか、ご確認ください。

$url .= " keyword=".rawurlencode($keyword);

↑この部分は、キーワードを受け取っているだけです。
ItemSeach.php側でキーワードは指定しないので、注意してください。

実際にキーワードの指定を行なっているのは、「item.js」側です。

sample003までは、プログラムの中に、検索キーワードを直接書いています。
var paramList = "keyword=" + encodeURIComponent("ヨーグルト");

でも sample004 からは、テキストボックスの値を取得するようになっています。
var paramList = "keyword=" + encodeURIComponent($F('txtWord'));

$F('txtWord') の部分で、テキストボックスの値を取得しています。
これは prototype.js の機能です。だから prototype.js を適切に配置しないと、動きません。

もちろん sample004 の index.html には、テキストボックスを用意する必要があります。

【補足】
その後、読者様からのメールで、ItemSeach.php側に、直接キーワードを記述していたことがわかりました。

&keyword=%E3%82%AB%E3%83%8B

最初に ItemSearch.phpを作成する時、パラメーターを含めたサンプルの動作確認をした後、そのまま sample2,3,4,5にも使ってしまったようです。

楽天ウェブサービス 組み立てたHTMLタグを表示する方法について。

【講座名】
楽天ウェブサービス初心者入門講座 に関する質問

【質問】
楽天ウェブサービスから XML で商品データを取得して、値を取り出し、HTMLを組み立てるところまでは理解できました。

そこで質問なのですが、組み立てたHTMLタグを、Webブラウザの画面に表示し、確認するには、どうしたらいいですか?

【回答】
HTMLタグをWebブラウザにそのまま表示するには、工夫が必要です。

HTMLタグはブラウザが解釈して表示してしまうので、 < > & などの特殊文字をエスケープする必要があるからです。つまりHTMLタグを無効にすることで、画面に表示できます。

prototype.js を利用しているので、その機能を使ってみましょう。

prototype.js は String クラスが拡張されているので、メソッドを利用することで、簡単にエスケープすることができます。

組み立てたHTMLタグは変数 tmpHtml に入っているので、
result.innerHTML = tmpHtml;
の部分を、
result.innerHTML = tmpHtml.escapeHTML();
に変更するだけで、エスケープした結果を表示できます。

*escapeHTML() は prototype.js の機能です。

エスケープしない場合は、テキストエリアにならそのままで出力できます。

またはアラートでもそのまま表示可能です。
alert(tmpHtml);

アラートで表示するのが一番手軽ですが、HTMLが長くなると見難いです。


【ワンポイント】
HTMLタグを表示する場合は、HTMLを組み立てるプログラム部分で、改行(\n)やタブ(\t)を入れると、出力した時に見やすくなります。

tmpHtml += "<p>\n";
tmpHtml += "<p>\t";

楽天ウェブサービス 取得件数である hits の上限について。

【講座名】
楽天ウェブサービス初心者入門講座 に関する質問

【質問】
取得件数である hits の上限がどうして30件までなのでしょうか?
JavaScript や prototype.js でのデフォルトの設定のようなものなのでしょうか。またこの値を変更するにはどうしたらいいですか。

【回答】
お問い合わせの件ですが、答えは単純で、楽天ウェブサービスの仕様がそのようになっているからです。

楽天ウェブサービスのオンラインドキュメントに 楽天商品検索API についての詳細な説明があります。

http://webservice.rakuten.co.jp/api/itemsearch/

このページの入力パラメーターの説明部分に、サービス固有のパラメータがあり、その6番目に、

『1ページあたりの取得件数 hits int 1から30までの整数』と書かれています。

取得件数が多すぎるとサーバーに負荷がかかるので、30件ぐらいが適当だと考えているのではないかと思います。(想像ですが)

利用者側としても取得件数が多すぎると、処理に時間がかかるため、30件で十分だと思います。

30件以上を一度に表示するには、JavaScript側で連続して2回以上非同期通信を行なえば可能です。変数にデータを保存しておいて、60件取得したら表示するようにしたらよいだけです。

つまり可能だけれど、自分でプログラムを工夫する必要があるということです。

しかしいろんな条件を考えなければいけないので、プログラムが複雑になります。

また頻繁に通信を行なうと、サーバーに負荷がかかるため、おすすめできません。仕様通り30件以内での利用を考えたほうが良いと思います。


スポンサードリンク


スポンサードリンク






プログラミング入門 Q&A TOPへ