ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

synchronousなAjaxはSjax?

Amazon Web Servicesから結果を取り出して、1ページ10件の結果を63ページ分アグリゲートするのに、何もAsynchronousじゃなくても良いのでは?と気づき、prototype.jsAjaxオブジェクトを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って、キーワードに登録されてた(汗 考えることはみんな同じか。。