« prototype.jsのAjax.Requestで非同期通信 | メイン | ラスカル »

2005年10月06日

amazon webサービス + AJAXSLTを試す-AMAJAX(アマジャックス)

前回のエントリー
GoogleのAJAXSLTをほげると書きましたが
さっそく、試してみました。(かなり適当ですがoutput先行ということで)

amazon webサービスとAJAXでほげほげ(+アマチュア仕様?)と
いう感じのアプリケーションを勝手に命名
AMAJAX(アマジャックス)←クリックして下さい。
キーワードを適当にいれて検索してみてください。

参考:
JavaScript++かも日記
blog:ponpon-village.net

予定通り追記します。

アプリの詳細についてメモ
検索クリック時に
prototype.jsのAjax.Requestを使って
キーワードを元にamazon webサービス(aws)を検索するプロキシサーブレットを呼びます。
取得に成功(onComplete)したら、xmlParseでパースして置きます。
-------------------------------
//XML取得
new Ajax.Request(xmlURL, {
method: 'GET',
asynchronous: true,
onComplete: function(httpRequest) {
xml = xmlParse(httpRequest.responseText);
}});
-------------------------------
非常にシンプルに非同期通信(asynchronousで同期、非同期を指定できる)が実装できます。

でそれとは別に同じくAjax.RequestでXSLも非同期通信で取得します。
取得に成功(onComplete)したら、xmlParseでパースして置きます。
-------------------------------
//XSL取得
new Ajax.Request(xslURL, {
method: 'GET',
asynchronous: true,
onComplete: function(httpRequest) {
xsl = xmlParse(httpRequest.responseText);
}});
-------------------------------

両方取得が完了するまで待ちます。
待ち方はsetTimeoutで0.1秒(100m秒)間隔で再起呼び出しています。
-------------------------------
function transforExec(cn){
if(xml == null || xsl == null){
setTimeout('transforExec("' + cn +'")',100);
return;
}
//ほげほげ
]}
-------------------------------

両方取得できたら後はxsltProcess(パース済みXML,パース済みXSL)で
埋め込むhtmlを作成し、
結果をinnerHTMLでページに埋め込みます。
-------------------------------
var html = xsltProcess(xml, xsl);
getElementByIdExtend(cn).innerHTML = html;
-------------------------------

かなり簡単です。
これでIEでもFirefoxでも動きます。

XMLHttpRequestのことやDOMのことを知らなくても簡単にAJAXできています。

今度はこれを拡張して、
ビッダーズのwebサービスやYahooのオークションなどを横断検索なんかで
ほげるつもりです。

投稿者 2ca3 : 2005年10月06日 10:07

トラックバック

このエントリーのトラックバックURL:
http://2ca3.dyndns.org/cgi-bin/mt/mt-tb.cgi/55

このリストは、次のエントリーを参照しています: amazon webサービス + AJAXSLTを試す-AMAJAX(アマジャックス):

» YahooオークションのRSS + AJAXSLTを試す from 2ca3::Weblog
以前のエントリーamazon webサービス + AJAXSLTを試す†AMAJ... [続きを読む]

トラックバック時刻: 2005年10月18日 21:41

コメント

あのような内容の薄いエントリーに
TBして頂きありがとうございます。
amazon webサービスは使ったことが無いのでよくわからなし、試してもいませんが、

new Ajax.Request(xmlURL, {
method: 'GET',
asynchronous: true,
onComplete: function(httpRequest) {
xml = httpRequest.responseXML;
}});

のように、onCompleteのところで、
responseXMLでいいのでは?と思いました。
XSLTの部分も同じく。

xmlParseは文字列をXML形式に変えているわけであり、
最初からXMLなら必要ないかなと。
違っていたらすみません。

投稿者 ponpon : 2005年10月12日 00:36

ponponさん、コメントありがとうございました。
反応が遅れてしまい申し訳ございません。
(最近、いろいろ忙しくて家にいる時間があまりない)

「xml = httpRequest.responseXML;」の件
なるほど、その通りですね。

勢い(サンプル見ながら)で作って放置していました。

自分では備忘録ぐらいに思っていても
web上に出すということは参考にされる方もいるかもしれないので
解説する時ぐらいはキチンと見直すべきでした。反省です。

ponponさんのblogよく拝見(参考に)させて頂いています。
よろしくお願いします。


投稿者 2ca3 : 2005年10月17日 21:32

ツッコミしてください




保存しますか?