Use at own risk. Programs haven't been thoroughly tested.
function: form2url
Very usefull if you want to have AJAX handle HTML FORM posts. This function will take a FORM ID as an argument, and then return all the form element values formatted as a 64bits encoded URL. Which can be easily sent to the server to perform some actions, because of AJAX this can all happen in the background, so the user experience is not interupted by reloading entire pages. Changing DB records can now happen in realtime.
Info
@author Kevin van Zonneveld
@version 0.8
@link http://kevin.vanzonneveld.net
@param (string) wformid The ID of the form element
@param (bool) encode_it Encode the values to increase compatibility
@version 0.8
@link http://kevin.vanzonneveld.net
@param (string) wformid The ID of the form element
@param (bool) encode_it Encode the values to increase compatibility
Example
Usage
Outputs
(url is now e.g. 'http://some.site.com/dbactions.php?action=save&object=car&vendor=ford')
var url = 'http://some.site.com/dbactions.php?'+form2url('form_id',false);
Outputs
(url is now e.g. 'http://some.site.com/dbactions.php?action=save&object=car&vendor=ford')
Source Code
download sourcefunction form2url(wformid,encode_it){ if (kform = document.getElementById(wformid)){ var fkeys = new Array(); var fvals = new Array(); var str = ""; var no,i; var inputFields = kform.getElementsByTagName("INPUT"); for(no=0;no<inputFields.length;no++){ if (inputFields[no].type.toLowerCase() == "checkbox"){ if(inputFields[no].checked){ fkeys[fkeys.length] = inputFields[no].name; fvals[fvals.length] = "on"; } } else if (inputFields[no].type.toLowerCase() != "button" && inputFields[no].type.toLowerCase() != "submit"){ fkeys[fkeys.length] = inputFields[no].name; fvals[fvals.length] = inputFields[no].value; } } var selectBoxes = kform.getElementsByTagName("SELECT"); for(no=0;no<selectBoxes.length;no++){ fkeys[fkeys.length] = selectBoxes[no].name; fvals[fvals.length] = selectBoxes[no].value; } var selectBoxes = kform.getElementsByTagName("TEXTAREA"); for(no=0;no<selectBoxes.length;no++){ fkeys[fkeys.length] = selectBoxes[no].name; fvals[fvals.length] = selectBoxes[no].value; } for(i=0;i<fkeys.length;i++){ str += "&"+fkeys[i]+"="+(fvals[i]?escape((encode_it?encode64(fvals[i]):fvals[i])):""); } return str; } } // This code was written by Tyler Akins and has been placed in the // public domain. It would be nice if you left this header intact. // Base64 code from Tyler Akins -- http://rumkin.com var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; function encode64(input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; do { chr1 = input.charCodeAt(i++); chr2 = input.charCodeAt(i++); chr3 = input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4); } while (i < input.length); return output; } function decode64(input) { var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0; // remove all characters that are not A-Z, a-z, 0-9, +, /, or = input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = keyStr.indexOf(input.charAt(i++)); enc2 = keyStr.indexOf(input.charAt(i++)); enc3 = keyStr.indexOf(input.charAt(i++)); enc4 = keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output = output + String.fromCharCode(chr1); if (enc3 != 64) { output = output + String.fromCharCode(chr2); } if (enc4 != 64) { output = output + String.fromCharCode(chr3); } } while (i < input.length); return output; }
No comments. Be the first!