Short Ajax Script

Posted on Tuesday the 13th of May, 2008 at 10:40 am in Asides, Dev

I wanted to see how small you could make a fully functional AJAX script that worked cross-browser and degraded gracefully, so I went through an old custom AJAX script and made it as small as I possibly could. In the resulting AJAX scripts, the post version is 410 characters and the GET version is only 359 characters long. The scripts are fully functional and accept the following parameters: URL, DATA (in string form), and ELEMENT (to update).

The scripts could be a little smaller, but it would really kill readability.

“Get” AJAX Script

  1. function a(l,d,u){
  2. try{r = new XMLHttpRequest();}catch(e){try {r = new ActiveXObject('Msxml2.XMLHTTP');}catch(e){r = new ActiveXObject('Microsoft.XMLHTTP');}}
  3. if(r){
  4. r.onreadystatechange = function() {if (r.readyState == 4 && r.status == 200){document.getElementById(u).innerHTML = r.responseText;}}
  5. r.open('GET', l+'?'+d, true);r.send(d);
  6. }
  7. }

“Post” AJAX Script

  1. function b(l,d,u){
  2. try{r = new XMLHttpRequest();} catch(e){try {r = new ActiveXObject('Msxml2.XMLHTTP');} catch(e){r = new ActiveXObject('Microsoft.XMLHTTP');}}
  3. if(r){
  4. r.onreadystatechange = function() {if (r.readyState == 4 && r.status == 200){document.getElementById(u).innerHTML=r.responseText;}}
  5. r.open('POST', l, true);r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');r.send(d);
  6. }
  7. }

Combined AJAX Script

This combined script also accepts a fourth parameter ‘p’ that should evaluate true if the data is to be sent by post.

  1. function a(l,d,u,p){
  2. try{r = new XMLHttpRequest();}catch(e){try {r = new ActiveXObject('Msxml2.XMLHTTP');}catch(e){r = new ActiveXObject('Microsoft.XMLHTTP');}}
  3. if(r){
  4. r.onreadystatechange = function() {if (r.readyState == 4 && r.status == 200){document.getElementById(u).innerHTML = r.responseText;}}
  5. if(p){r.open('POST', l, true);r.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');}else{r.open('GET', l+'?'+d, true);}
  6. }
  7. }

Demo: (Sorry but you will have to go to the full page so the JavaScript is loaded.)
Click here to see the POST HTML of the homepage
Click here to see the GET HTML of the homepage
(they are the same)

Related posts

  1. Advanced posted the following on October 16, 2007 at 11:36 am.

    That’s just awesome!

    How could you possibly get it any smaller?

    All I see is a bit of extra white space.

    (The single character vars made me giggle.)

    Reply to Advanced
    1. Aaron posted the following on October 18, 2007 at 6:27 pm.

      White spaces are counted as characters, but there are a few other things: true could be 1, no brackets are needed after r.readyState == 4 && r.status == 200), and the try could be a little less careful. I think there are a few other things I came up with, but I can’t remember them anymore.

      Reply to Aaron

Leave a reply

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: ;) :!: :?: :idea: :arrow: :| :mrgreen: