LX: tinyJS-Toolkit beta: t.a Ajax-Funktion

Beitrag lesen

Dass Requestobjekt verfügbar zu machen, wäre eine Variante. Die Lösung die Du jetzt aber hast, eigene Methoden zu definieren, ist so schön, dass ich eben die Einschränkung nicht verstehe. Bei updates der vordefinierten Eigenschaften/Methoden wärst Du einerseits ohne weitere Anpassungen kompatibel. Nicht dass das hier als wirkliches Argument hinreicht, weil der Code wirklich schön einfach ist. Andererseits könnte man eben so eigenen Schnickschnack wirklich gelungen einfach integrieren.

Meinst Du, ich sollte lieber eine auf die bereits verwendeten Instanzen gefilterte Kopie des Objekts direkt in das Request-Objekt einhängen?, also statt diesem Array und dessen Iteration lieber folgendes zu tun (Vorsicht, kein getesteter Code, nur mal in der Theorie):

t.a=function(o) {  
    // create XMLHttpRequest or leave  
    var x=(window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"));  
    if (!x) { return false; }  
    // Open Request  
    x.open(o.method||'GET', o.url, !!o.async, o.user, o.pass);  
    // Send data  
    x.send(o.data?(typeof o.data==='object'?t.p(o.data):o.data):null);  
    // if not async, return result  
    if (!o.async) { return x['response'+o.type||'Text']; }  
    // Add everything not currently used to the Request Object  
    t.x(x, t.f(o, function(k, v) { return /(url|method|data|type|async|user|pass)/.test(k)?u:v; }));  
    // if async, set result handler function  
    x.onreadystatechange=function(e) { if (x.readyState===4) { o.async(x['response'+o.type||'Text']); } }  
    // return request object for further fun  
    return x;  
};

Diese Lösung ist sogar ein paar Zeichen kleiner und hat daher durchaus das Potential, in einer baldigen Version integriert zu werden.

Gruß, LX

--
RFC 1925, Satz 6a: Es ist immer möglich, einen weiteren Umweg einzufügen.
RFC 1925, Satz 11a: Siehe Regel 6a