AjaxPages.jsを使うときのお話

JavaScriptのテンプレートエンジン(?)AjaxPages.jsの注意点。(ajaxpages_20050727.zip)
大変便利なのだが、
ajpをロードするときなに、ソースが以下のようになっている。

        var req;
        // branch for native XMLHttpRequest object
        if (window.XMLHttpRequest) {
            req = new XMLHttpRequest();
            req.open("GET", url, false);
            req.send(null);
        // branch for IE/Windows ActiveX version
        } else if (window.ActiveXObject) {
            req = new ActiveXObject("Microsoft.XMLHTTP");
            if (req) {
                req.open("GET", url, true);
                req.send();
            }
        }

これ、IEのとき、.open("GET", url, true);なのだが、これだと「非同期」でリクエストになってしまう。
すると、タイムラグがあった場合、まだ使用できないreqにアクセスしてしまい反応がおかしくなる。
ここはfalseにするか、思い切ってprototype.jsのAjax.Requestに差し替えた方が良いかもしれない。

僕はAjax.Requestにしてます。


あと、ieだとajp内でvar宣言をしてない変数にアクセスするときスコープの関連で失敗することがあるので、
context(ajpに渡るパラメータ)以外はvar宣言を忘れないようにしよう。