如何使用jQuery发布包含许多字段的表单?

虽然$ .ajax()可用于执行ajax事务,但我认为它不适合发布大型表单的值。

如果不手动输入大表格(许多字段),您将如何post

这个假设背后的理由是什么? POST用于传输比GET更大量的数据。 AJAX POST请求几乎与“普通”POST请求完全相同,它只是由浏览器以略微不同的方式在内部捆绑和处理。 一些标题可能略有不同,但数据完全相同。 为什么AJAX无法处理“大”forms?

你甚至会把它定义为“大”的forms?

编辑:感谢您对问题的澄清。 我明白你现在在问什么,我知道你来自哪里。 对于具有大量输入的表单,将其捆绑到Ajax请求中可能会很麻烦。

由于您使用的是jQuery,因此可以轻松解决此问题。 查看serialize()方法。 你给它一个表单,它会返回一个包含所有表单输入元素和值的查询字符串,您可以直接将其传递给ajax请求。 手册页上有一个示例,说明了它是如何完成的。

你所要做的就是:

 $.ajax({ data: $("form").serialize(), //etc. }); 

其中"form""form"的id。

如果您不想手动处理每个元素,则可能需要使用序列化 。

 $.ajax({ type: "POST", url: "form.php", data: $("#form_id").serialize() success: function(msg) { alert("Form Submitted: " + msg); } }); 

您可以使用jQuery.post( url, data, callback, type) ,因为它更简单的jQuery.ajax( options )

通过使用serialize ,您可以自动发送整个表单。

 $.post("/post_handler/", $("form#my_form").serialize(), function(json){ /*your success code*/ }, "json"); 

一个更完整的例子:

  

这将覆盖默认post ,并使用AJAX执行它。

如果你还没有尝试过。 然后创建一个BIG表单(现在你的意思是什么)并使用$.ajax()或jQuery Forms插件发布它。 你会知道它是否适合这种事情!

编辑: – (编辑后)然后表格插件是给你的! 试一试。

试试jquery表单插件 。

它可能完全符合您开箱即用的要求。

我用$ .ajax()发送了相当复杂(大)的表单并没有问题。 我没有通过ajax请求发送文件,但我已经看到它已经完成,它比传统的post效果更好,因为它在上传时不会占用浏览器。

根据你对@zombat的评论,我猜你有大量的输入,其中大部分时间都是空白的。 这里有两个建议1)将输入分成不同的forms,只有在触摸/完成时才发送。 2)使用JavaScript检查表单的状态并将信息包装到JSON或XML中,而不是发布表单数据,只发布数据结构。

“大”应该不是问题,也许你可以找到一个更好的形容词来描述你的数据,让每个人都知道为什么它很难发送。

你要问的并不难。 您所要做的就是收集表单的内容并将其传递给您的服务器(通常使用JSON)。

看看这个howto:

http://code.tutsplus.com/tutorials/submit-a-form-without-page-refresh-using-jquery–net-59