Amazon Web Servicesから結果を取り出して、1ページ10件の結果を63ページ分アグリゲートするのに、何もAsynchronousじゃなくても良いのでは?と気づき、prototype.jsのAjaxオブジェクトをsynchronousで使ってみることに。
Synchronousの場合は、
var myAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: showResponse, asynchronous: false });
のように、asynchonousパラメータをfalseで呼ぶわけですが、この場合コールバック関数であるshowResponseは呼ばれません。したがって、以下のように明示的に呼ぶ必要があります。(transportはここで利用したXMLHttpRequestオブジェクト)
showResponse(myAjax.transport);
あと、知らなくて大変だったのが、WebServiceを呼んで返却されたXMLをどう処理するかという点なのですが、最初、返却されたXMLをHTML中に貼り付けて、ページ全体をパーズするのかと思ってました。
<span id = "aaa"/>
ってHTMLを書いといて、
$('aaa').innerHTML = originalRequest.responseText; objAaa = document.getElementById("aaa");
みたいな。
が、全くうまくパーズ出来ないので、なんでかなぁと思いつつ、おもむろにGoogleで検索してみたところ、
documentObj = originalRequest.responseXml;
ということが出来るのに気づきました。なんだ、そんなこと出来るんなら早く言ってよ。とか思いましたが、全くの基礎知識不足に愕然とさせられました。。
そんなわけで、Amazon Web Servicesから検索結果を取り出して、HTMLの表形式にすることが出来ましたとさ。つか、欲しい項目指定してポチっと検索したら、表形式にしてくれるサービスとかないのかねぇ。(まあ、そんなのあったら、ちっとも勉強しなかっただろうけど(汗)
→Sjaxって、キーワードに登録されてた(汗 考えることはみんな同じか。。