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

omg*_*omg 17 forms jquery post

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

如果post不手动输入所有这些形式(很多领域),你会怎样?

zom*_*bat 43

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

你甚至会把它定义为"大"的形式?

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

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

你所要做的就是:

$.ajax({
    data: $("form").serialize(),
    //etc.
});
Run Code Online (Sandbox Code Playgroud)

"form"表格的ID 在哪里.

  • 我不同意POST是用于传输大量数据然后GET.POST用于使用新信息更改服务器的状态.GET用于从服务器检索资源. (8认同)
  • @John:是的,这是每个人的主要目的.但是,对POST请求的大小没有实际限制,而GET请求具有已知的限制,在超出时会导致问题.我认为我使用"专门用于"这一短语有点不正确,因为它暗示这是POST的唯一*目的,当然这不是预期的解释. (2认同)

小智 10

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

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


Est*_*ber 6

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

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

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

一个更完整的例子:

<script>
$().ready(function(){
    $("form#my_form submit").click(function(){
        $.post("/post_handler/",
            $("form#my_form").serialize(),
            function(json){
                /*your success code*/
            }, "json");
        return false;
    });
}
</script>
<form id="my_form" action="/post_handler/" method="post">
  <input type="text" name="text1" value="my text 1" />
  <input type="text" name="text2" value="my text 2" />
  <input type="submit" name="submit_button" value="Send" />
</form>
Run Code Online (Sandbox Code Playgroud)

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