【講座名】
楽天ウェブサービス初心者入門講座 に関する質問
【質問】
楽天ウェブサービスから 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";
スポンサードリンク
2008年08月10日
2008年05月25日
楽天ウェブサービス 取得件数である 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件以内での利用を考えたほうが良いと思います。
楽天ウェブサービス初心者入門講座 に関する質問
【質問】
取得件数である 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件以内での利用を考えたほうが良いと思います。
スポンサードリンク

