JQuery: можно создать строку GET с вложенными массивами с помощью serialize ()? - PullRequest
1 голос
/ 03 марта 2011

У меня есть страница с 3 формами.

Чтобы создать действительную строку данных get (или post) для каждой формы в виде вложенного массива, вложенных массивов.

псевдо-код длячто я хочу (просто не знаю, как обернуть их во вложенные массивы ..):

var data_str = $('#form1').serialize() + $('#form2').serialize() + $('#form3').serialize();
$.ajax(.....

желаемый вывод при обработке файла:

print_r($_GET);
/*
{
    ['form1'] => .....nested array here..
    ['form2'] => .....nested array here..
    ['form3'] => .....nested array here..
}
*/

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Я не профессионал по javascript, но я создал решение, и оно работает, наслаждайтесь:

function mutliple_forms_to_data_str(array_of_form_ids){
    var multidim_data = {};
    $.each(array_of_form_ids, function(index,id) {
        var forms_data = $('#'+id).serializeArray();            
        var htemp = {};
        $.each(forms_data, function(index,val) {
            htemp[val.name] = val.value;
        });
        multidim_data[id] = htemp;
    });    
    return multidim_data;
}
1 голос
/ 03 марта 2011
$.get({
data:{
   form1:$('#form1').serialize(),
   form2:$('#form2').serialize(),
   form3:$('#form3').serialize()
},

//other options
0 голосов
/ 03 марта 2011

Использование массива push, чтобы сделать это

но, честно говоря, лучше всего использовать одну форму без необходимости для всех трех из них, если только это не последний ресурс. или просто.

var data_str = {
     'form1': $('#form1').serialize(),
     'form2': $('#form2').serialize(),
     'form3': $('#form3').serialize(),
    }

PHP будет читать их нормально, как древовидный массив,

Возможно, вам придется использовать serializeArray(); вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...