Object.prototype.toPHP = function () { var retf='O:8:"stdClass":'; var reta=':{'; var ct=0; var last; for (var i in this) { if (typeof this[i] == 'function') continue; reta+=i.toPHP()+this[i].toPHP(); ct++; } return retf+ct+reta+'}'; } String.prototype.toPHP = function () { /* Make sure all strings have network-style carraige returns; if we don't, PHP doesn't recognize the length as correct. As a result, the String type is not binary safe. What are you doing passing binaries via POST anyway?? Use the normal file uploading for cripes sake. */ var s=this.replace(/((?:\r|\n|\r\n))/g,'\r\n'); var i=-1,ct=0; while ((i=s.indexOf('\n',i+1))!=-1) ct++; return 's:'+(s.length-ct)+':"'+s+'";'; } Boolean.prototype.toPHP = function () { return 'b:'+(this==true?1:0)+';'; } Number.prototype.toPHP = function () { /* Only make it a double if we actually need to */ return (this==Math.floor(this)?'i':'d')+':'+this.toString()+';'; } Date.prototype.toPHP = function () { /* Changes into an int compatible with mktime() */ return 'i:'+Math.floor(this.getTime()/1000)+';'; } Array.prototype.toPHP = function () { var ret='a:'+this.length+':{'; for (var i=0; i