Skip to content

Instantly share code, notes, and snippets.

@nickjacob
Created August 22, 2012 02:18
Show Gist options
  • Save nickjacob/3421558 to your computer and use it in GitHub Desktop.
Save nickjacob/3421558 to your computer and use it in GitHub Desktop.
I wrote this for something else because I realized I was using jQuery just for Ajax bc I was too lazy to learn the actual DOM API for XHR.. This is Smaller.
/***
* lil' ball
* this isn't even a library. I just realized that I'd been using jQuery *only* because
* I needed an easy way to do ajax. So I finally got my sh** together an just wrote smtng.
*
* author: @nickjacob
***/
;(function(window,undefined){
window._o_ = window._o_ || {};
var _doc = window.document,
_cookie = window.document.cookie,
_jprse = (JSON && JSON.parse) ? JSON.parse : function(e){return e;};
window._o_.ajax = function(args){
var rqst = (!window.ActiveXObject) ? new XMLHttpRequest() :
((newIE ? new AXO('Msxml2.XMLHTTP'): new AXO('Microsoft.XMLHTTP'))), data;
var url=args.url + '?';
for(var i in args.data){
url += encodeURIComponent(i) + '=' + encodeURIComponent(args.data[i]) + '&';
};
rqst.open(args.method.toUpperCase(),url,true);
rqst.onreadystatechange = function() {
if(rqst.readystate===4){
if(rqst.status===200){
return args.success.call((ctx||null),_jprse(rqst.response));
}
else {
return args.error.call((ctx||null),_jprse(rqst.response));
}
}
};
rqst.setRequestHeader('X-CSRFToken',_o_.getCookie('csrftoken'));
for(var i in args.headers){
rqst.setRequestHeader(i,args.headers[i]);
}
rqst.send();
};
window._o_.getCookie = function(attr) {
attr = attr + '=';
var cookie = _cookie.split(';'), clen = cookie.length;
for(var i=0; i < clen;i++) {
var curr = cookie[i];
while(curr.charAt(0)===' ') curr.substring(1,curr.length); // ltrim
if(curr.indexOf(attr)===0){
return curr.substring(attr.length,curr.length);
}
}
};
window._o_.formSerialize = function(formElem) {
var out = {}, elems = formElem.elements;
for(var i=0,l=elems.length;i<l;i++) {
if(elems[i] && elems[i].name && elems[i].value)
out[elems[i].name] = elems[i].value;
}
return out;
};
})(window);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment