Php jQuery以部分形式提交一个大表单
我有一个大的表单,它被拼接成4个div,每个div代表一个步骤,所有内容都包含在一个表单中,我的问题是表单变得太大了,因为它能够动态添加新字段(图片、文本、语言)Php jQuery以部分形式提交一个大表单,php,jquery,forms,Php,Jquery,Forms,我有一个大的表单,它被拼接成4个div,每个div代表一个步骤,所有内容都包含在一个表单中,我的问题是表单变得太大了,因为它能够动态添加新字段(图片、文本、语言) 因此,我想知道是否有任何选项可以部分提交此表单,我的服务器限制每篇文章只能提交20个字段,我无法更改此设置,为什么不创建多个表单,并与每个步骤关联?您可以始终将字段值打包到一个大json数组中,对其进行编码,然后使用jQuery.ajax发布。它将看起来像一个大的单一领域。在服务器端,您可以对其进行解码,然后瞧,绕过限制。但老实说,那
因此,我想知道是否有任何选项可以部分提交此表单,我的服务器限制每篇文章只能提交20个字段,我无法更改此设置,为什么不创建多个表单,并与每个步骤关联?您可以始终将字段值打包到一个大json数组中,对其进行编码,然后使用jQuery.ajax发布。它将看起来像一个大的单一领域。在服务器端,您可以对其进行解码,然后瞧,绕过限制。但老实说,那是什么样的服务器?我以前从未听说过这种限制 另一种解决方案是在服务器端复制表单的状态(例如,在会话存储中),并进行ajax调用以更新会话存储中的各个字段。例如,当用户离开某个字段时,您将该字段的值发布到服务器,然后服务器更新会话存储中的字段值
还有许多其他可能的解决方案。如果服务器限制困扰您,您可以用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;
};
像
而不是在服务器上
$data = json_decode($_GET["data"]);
foreach($data as $row)
{
//Do What ever you want with $row
}
或者如果您需要使用$\u POST
var post_data = { data : data};
$.post('url', post_data ,function(data) {
console.log(data);
});
@Cody answer工作得很好但我在文件输入方面有问题
这个库也很好用,我可以提交文件,支持内部数组,没有任何更改您可以将它作为JSON输入发送到服务器吗?@Murali是的,这将是最好的解决方案,在JSON上序列化您的表单。因为我只想单击一个按钮,然后提交所有内容,多个表单,表示多个提交按钮,尽管可以制作一个按钮并使用jqueryy提交每个按钮。您可以对所有表单字段进行json_编码,因此只发布一个数据:$(“#您的表单_id”)。serialize()
var post_data = { data : data};
$.post('url', post_data ,function(data) {
console.log(data);
});