This is a simple helper function to serialize a form element:
function serialize(form) {
var field, l, s = [];
if (typeof form == 'object' && form.nodeName == "FORM") {
var len = form.elements.length;
for (var i=0; i<len; i++) {
field = form.elements[i];
if (field.name && !field.disabled && field.type != 'file' && field.type != 'reset' && field.type != 'submit' && field.type != 'button') {
if (field.type == 'select-multiple') {
l = form.elements[i].options.length;
for (var j=0; j<l; j++) {
if(field.options[j].selected)
s[s.length] = encodeURIComponent(field.name) + "=" + encodeURIComponent(field.options[j].value);
}
} else if ((field.type != 'checkbox' && field.type != 'radio') || field.checked) {
s[s.length] = encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value);
}
}
}
}
return '&'+s.join('&').replace(/%20/g, '+');
}
Proper use would be to pass elem.target
in on a submit listener for instance. This function was taken from Serialize form data into a query string.
If you would like to serialize a simple object the function is much easier.
function serialize(data) {
var dataArr = [];
for (key in data) {
dataArr.push(key+'='+data[key]);
}
return '&'+dataArr.join('&').replace(/%20/g, '+');
}