2012-10-03 49 views
0

我有一个大表格拼接成4个div,每个div表示一个步骤,所有内容都只包含在1个表格中,我的问题是表格变得太大了,因为有能力动态地添加新字段(图片,文本,语言),jQuery提交大部分表格

所以我想知道是否有任何选项提交这个表格的部分,我的服务器有每个帖子20个字段的限制,我不能改变此设置

+3

您可以将它作为JSON输入发送到服务器吗? –

+1

@Murali是的,这将是最好的解决方案,在jSon上序列化你的表单。 – Burimi

回答

1

如果服务器限制困扰你,你可以序列化JSON形式,并通过这个作为一个参数

$.fn.serializeObject = function() 
{ 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
     if (o[this.name] !== undefined) { 
      if (!o[this.name].push) { 
       o[this.name] = [o[this.name]]; 
      } 
      o[this.name].push(this.value || ''); 
     } else { 
      o[this.name] = this.value || ''; 
     } 
    }); 
    return o; 
}; 

var data = $("form#myform").serializeObject(); 
window.location = "url?data="+encodeURIComponent(data); 

比服务器

$data = json_decode($_GET["data"]); 
foreach($data as $row) 
{ 
//Do What ever you want with $row 
} 

或者如果您需要使用$ _POST

var post_data = { data : data}; 
$.post('url', post_data ,function(data) { 
    console.log(data); 
}); 
+0

这是否会与“文件”输入? –

0

为什么不创建多个表单,与每个步骤相关联?

+0

,因为我只是想点击一个按钮,并提交一切,多形式的形式,意味着倍数提交按钮,虽然是可能的做一个按钮,并提交每个与jquery –

+1

你可以json_encode所有的表单字段,所以你只能得到一个数据发布:$('#your_form_id')。serialize() –

1

您可以随时将字段值打包到一个大的json数组中,对其进行编码并使用jQuery.ajax进行发布。它看起来像一个大单场。在服务器端,你可以对它进行解码,然后绕过限制。但说实话,那是什么样的服务器?我从来没有听说过这种限制。

另一种解决方案是在服务器端(例如,在会话存储中)复制表单的状态,并进行ajax调用来更新会话存储中的各个字段。例如。当用户离开字段时,您将该单个字段的值发布到服务器,然后服务器更新会话存储中的字段值。

可以有许多其他可能的解决方案。

0

@Cody答案作品不错,但我有问题,文件输入,

这个库http://jquery.malsup.com/form/,工程太伟大了,我能提交的文件,并支持内阵列,没有任何变化