Всем привет.
Что-то я уже долго голову ломаю, но ничего не получается.
Вобщем пишу функцию. В функцию передается объект формы.
Она должна перебрать все элементы формы и отдать строку, пригодную для отправки на сервер. То есть:
поле=значение&поле=значени
Проблема с select-multiple. Как нужно передать такой селект, если выбрано несколько элементов?
Octane,
Если имя select указано так: name="field[]"
То на сервере я получу массив $_POST['field']
Где будут все выбранные поля из списка.
Вопрос в том, как сформировать строку для Ajax отправки
Пройтись в цикле по select.options, проверяя на наличие атрибута selected, и сформировать строку. Хотя если форма только скриптом отправляется, можно в любом удобном виде отправлять.
function SerializeForm(form){
var fields = form.elements;
var field, name, value, type;
var res = '';
for(var z = 0; z < fields.length; z++){
field = fields[z];
name = field.name;
value = field.value;
type = field.type;
if(typeof name == "undefined" || name == ""){continue;}
if(type == 'checkbox' || type == 'radio'){
if(field.checked){
res += name +"="+ value +"&"; continue;
}else{
continue;
}
}
if(type == "select-multiple"){
for(var so = 0; so < field.length; so++){
if(field[so].selected){
res += name +"="+ field[so].value +"&";
}
}
continue;
}
res += name +"="+ value +"&";
}
return encodeURIComponent(res);
}