我有一个大表格拼接成4个div,每个div表示一个步骤,所有内容都只包含在1个表格中,我的问题是表格变得太大了,因为有能力动态地添加新字段(图片,文本,语言),jQuery提交大部分表格
所以我想知道是否有任何选项提交这个表格的部分,我的服务器有每个帖子20个字段的限制,我不能改变此设置
我有一个大表格拼接成4个div,每个div表示一个步骤,所有内容都只包含在1个表格中,我的问题是表格变得太大了,因为有能力动态地添加新字段(图片,文本,语言),jQuery提交大部分表格
所以我想知道是否有任何选项提交这个表格的部分,我的服务器有每个帖子20个字段的限制,我不能改变此设置
如果服务器限制困扰你,你可以序列化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);
});
这是否会与“文件”输入? –
为什么不创建多个表单,与每个步骤相关联?
,因为我只是想点击一个按钮,并提交一切,多形式的形式,意味着倍数提交按钮,虽然是可能的做一个按钮,并提交每个与jquery –
你可以json_encode所有的表单字段,所以你只能得到一个数据发布:$('#your_form_id')。serialize() –
您可以随时将字段值打包到一个大的json数组中,对其进行编码并使用jQuery.ajax进行发布。它看起来像一个大单场。在服务器端,你可以对它进行解码,然后绕过限制。但说实话,那是什么样的服务器?我从来没有听说过这种限制。
另一种解决方案是在服务器端(例如,在会话存储中)复制表单的状态,并进行ajax调用来更新会话存储中的各个字段。例如。当用户离开字段时,您将该单个字段的值发布到服务器,然后服务器更新会话存储中的字段值。
可以有许多其他可能的解决方案。
@Cody答案作品不错,但我有问题,文件输入,
这个库http://jquery.malsup.com/form/,工程太伟大了,我能提交的文件,并支持内阵列,没有任何变化
您可以将它作为JSON输入发送到服务器吗? –
@Murali是的,这将是最好的解决方案,在jSon上序列化你的表单。 – Burimi