Here’s a quickie for you Ajax coders who need a function to parse your form fields into a URL query string. It handles input fields (text, hidden, whatever), radio and checkbox elements, and single/multiple select menus. Just make sure that all your form fields have IDs. Multiple choice SELECTs get grouped by pipes (|). Update:Modified multiple-choice SELECTs to work like real GETs.
function build_post_string(frm) { var poststr; var poststr_array = []; if (!frm.id) { // assume it's a string. get the form object frm = document.getElementById(frm); } for (i=0;i<frm.elements.length;i++){ var elem = frm.elements; if (!elem.id) { // skip any fields that don't have IDs continue; } if (elem.type == 'radio' || elem.type == 'checkbox') { // only grab radio buttons and checkboxes that are checked if (!elem.checked) { continue; } } // get select values if (elem.nodeName.match(/SELECT/i) && elem.multiple) { //var sel = elem; var sel_array = new Array(); for (var o=0;o<elem.options.length;o++) { if (elem.options[o].selected) { sel_array[sel_array.length] = elem.id+"="+elem.options[o].value; } } var sel_str = sel_array.join('&'); // build key/value pairs for SELECTs poststr_array[poststr_array.length] = sel_str; } else if (elem.nodeName.match(/SELECT/i)) { poststr_array[poststr_array.length] = elem.id+'='+elem.options[elem.selectedIndex].value; } else { // build key/value pairs for everything else poststr_array[poststr_array.length] = elem.id+"="+elem.value; } } // build poststr poststr = poststr_array.join("&"); return poststr; }
Book Suggestions: