2010 09/19 23:18
Category : カレン・システム
Fx.e = function(d1,d2,d3){
if(typeof(d1) == "object") d1 = d1.join("");
var a = new XMLHttpRequest();
if(typeof(d2) == "boolean" && d2 == false){
a.open("get", d1, false); a.send(null);
return res(a);
} else {
if(typeof(d2) == "object") d2 = d2.join("");
var mode = d1.match(/^[a-z0-9_]+$/) ? "post" : "get";
var get = mode == "get";
var key = (get ? d2 : d3) || "entry";
if(get){
Lo[key].uri = d1;
if(typeof(Lo[key].bef) == "function") Lo[key].bef();
}
Re[key] = a;
a.onreadystatechange = function(){
if(a.readyState == 4){
if(a.status == 200) Lo[key](a.responseText.replace(/\r?\n/g, "\t"));
else typeof(Lo[key].err) == "function" ? Lo[key].err() : Fx.err();
}
};
a.open(mode, get ? d1.replace(/#.*$/, "") : "/cgi-bin/" + d1 + ".cgi", true);
if(!get) a.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
a.send(get ? null : d2);
}
};
if(typeof(d1) == "object") d1 = d1.join("");
var a = new XMLHttpRequest();
if(typeof(d2) == "boolean" && d2 == false){
a.open("get", d1, false); a.send(null);
return res(a);
} else {
if(typeof(d2) == "object") d2 = d2.join("");
var mode = d1.match(/^[a-z0-9_]+$/) ? "post" : "get";
var get = mode == "get";
var key = (get ? d2 : d3) || "entry";
if(get){
Lo[key].uri = d1;
if(typeof(Lo[key].bef) == "function") Lo[key].bef();
}
Re[key] = a;
a.onreadystatechange = function(){
if(a.readyState == 4){
if(a.status == 200) Lo[key](a.responseText.replace(/\r?\n/g, "\t"));
else typeof(Lo[key].err) == "function" ? Lo[key].err() : Fx.err();
}
};
a.open(mode, get ? d1.replace(/#.*$/, "") : "/cgi-bin/" + d1 + ".cgi", true);
if(!get) a.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
a.send(get ? null : d2);
}
};
第1引数が配列渡しの場合は連結されます。
第2引数がfalseの場合は、get送信で値を取得するまでウェイトが掛かり代入されます。
str = Fx.e("取得したいファイル", false); のように利用する。(同期通信)
第2引数がfalse以外は非同期通信になる。
第1引数がcgi名(diary_form,diary_editor等)の場合はpost送信になる。
その場合のデータ部分は第2引数になる。それが配列なら連結される。
非同期通信のときの戻り関数の指定は第2引数か第3引数になる。場合による。
getの場合は第2引数、postの場合は第3引数になる。
省略時にはデフォルトとして"entry"の文字列が割り当てられる。
戻りの関数は Lo.entry() .... 省略時の関数。のように Lo.string()になる。
ロードのエラーが起こった場合には、Lo[key].err() もしくは、Fx.err()が実行される。
戻り関数 Lo[key]には次のプロパティが設定される。
Lo[key].uri get送信のときのurl
Lo[key].bef() url置換が必要なときの関数が設置されていれば実行される。
Lo.entry(str) のように実行される際のstrは改行コードがタブコードに置換される。
戻りのデータは Re.entry.resposeTextでも取得が可能。
■カレン
■eDisp