2011-03-03 75 views
1

我有一个页面上有3个窗体。jquery:可能使用serialize()嵌套数组创建GET字符串?

创建一个有效的get(或post)数据str与每个窗体作为嵌套数组嵌套数组。

为我想要什么伪代码(只是不知道如何将它们包装在嵌套数组。):

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.. 
} 
*/ 

回答

1

我不是一个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
$.get({ 
data:{ 
    form1:$('#form1').serialize(), 
    form2:$('#form2').serialize(), 
    form3:$('#form3').serialize() 
}, 

//other options 
+0

感谢Praveen,但这只是创建3个GET/POST值和没有嵌套数组。有序列字符串而非嵌套数组... – Haroldo 2011-03-03 12:47:11

0

使用阵列推,做到这一点

但老实说,你最好使用一种形式没有必要所有三个人,除非是最后resourc即 或简单地。

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

PHP将精细读他们像数组一棵树,

您可能需要使用serializeArray();代替

+0

PHP读取此类似:'阵列 ( [form_1]> 'data_str1' [form_2]> 'data_str2' [form_3]> 'data_str3' ) ' – Haroldo 2011-03-03 12:43:26

+0

它是3种形式,因为它是webapp的一部分,表单可以单独提交。 – Haroldo 2011-03-03 12:44:16

+0

正确尝试用'serializeArray'替换'serialize' – Val 2011-03-03 12:53:12