如何使用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