« 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