Sack of Ajax

Sack of AjaxというJavascriptライブラリがあるんですね。Simple AJAX Code Kitの略だそうです。

同じ様なajax Javascriptライブラリのprototype.js(厳密にはprototyps.jsは、ajaxだけのライブラリではないんですけどね)と比較してみると、prototype.jsでは

new Ajax.Updater(
    'id', 
    '/url',
    { 
      parameters: value,
      onLoading: function(request){loading()} 
    });

となるコードが、

var mydata = value;
ajax = new sack('/url');
ajax.element = 'id';
ajax.onLoading = function(){loading()};
ajax.runAjax(mydata);

といった形で書けるようです。これはresponseTextを直接特定のエレメントにはめ込む例ですね。

responseTextを一旦変数に入れて何かしたい場合は、「Catalystでajax - 補足」で触れた例を使うと、prototype.jsでは、

new Ajax.Request(
    '/deislde/index.cgi',
    {
      method: 'GET',
      onComplete: function(request){
        eval('tagsListObj = ' +  request.responseText);
    displayTags();
      }
    });

というコードが、Sackの方では

ajax = new sack('/delside/index.cgi');
ajax.method = 'GET';
var response = ajax.response;
ajax.onCompletion = function() {
                eval('tagsListObj = ' +  response);
                displayTags();
                    };
ajax.runAjax();

といった感じになるようです。(ここで挙げたコードは、たぶんこうだろうというのを書いただけで、実際には試していませんです。)

prototypeでは、オブジェクトをnewすると同時に必要なパラメータを全部与えて即実行、という感じですが、Sackではオブジェクトをnewしてから、必要なパラメータを1つづつセットして、任意のタイミングで実行、という感じですね。

俺はどちらかというと、Sackの方が好みなんですが、prototypeの方はフォームデータをシリアライズするメソッドなどがあって便利なので、両方組み合わせるとより快適ににajaxできるんではないでしょうか。