Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery发布包含多个字段的表单?_Jquery_Forms_Post - Fatal编程技术网

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

如何使用jQuery发布包含多个字段的表单?,jquery,forms,post,Jquery,Forms,Post,虽然$.ajax()可以用来做ajax的事情,但我认为它不适合发布大表单的值 你如何发布一个大表单(许多字段),而不手工输入所有表单?你的假设背后的理由是什么?POST设计用于传输比GET更大量的数据。AJAX POST请求几乎与“正常”POST请求完全相同,只是由浏览器以稍微不同的方式在内部捆绑和处理。两个标题可能略有不同,但数据都是相同的。为什么AJAX不能处理“大”表单 你会怎么定义“大”表单呢 编辑:感谢您对问题的澄清。我理解你现在的要求,我知道你从哪里来。对于一个有大量输入的表单,总是

虽然$.ajax()可以用来做ajax的事情,但我认为它不适合发布大表单的值


你如何
发布一个大表单(许多字段),而不手工输入所有表单?

你的假设背后的理由是什么?POST设计用于传输比GET更大量的数据。AJAX POST请求几乎与“正常”POST请求完全相同,只是由浏览器以稍微不同的方式在内部捆绑和处理。两个标题可能略有不同,但数据都是相同的。为什么AJAX不能处理“大”表单

你会怎么定义“大”表单呢

编辑:感谢您对问题的澄清。我理解你现在的要求,我知道你从哪里来。对于一个有大量输入的表单,总是将其捆绑到Ajax请求中可能是一件痛苦的事情

因为您使用的是jQuery,所以有一个简单的解决方案。看看这个方法。您给它一个表单,它会返回一个包含所有表单输入元素和值的查询字符串,您可以将这些元素和值直接传递给ajax请求。在手册页面上有一个例子,展示了它是如何完成的

你所要做的就是:

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

其中,
“form”
是表单的id。

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

请看下面的指南:


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

编辑:-(编辑后)是给你的!试一试。

您可以使用,因为它更容易操作

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

$.post("/post_handler/",
    $("form#my_form").serialize(),
    function(json){
        /*your success code*/
    }, "json");
一个更完整的示例:

<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>

$().ready(函数()){
$(“表单#我的表单提交”)。单击(函数(){
$.post(“/post\u handler/”,
$(“表单#我的表单”).serialize(),
函数(json){
/*你的成功代码*/
}“json”);
返回false;
});
}
这将覆盖默认的
post
,并使用AJAX执行它。

请尝试

它可能正是您需要立即执行的操作。

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

$.ajax({
   type: "POST",
   url: "form.php",
   data: $("#form_id").serialize()
   success: function(msg) {
     alert("Form Submitted: " + msg);
   }
 });
我用$.ajax()发送了相当复杂(大)的表单,没有问题。我没有通过ajax请求发送文件,但我看到它已经完成了,它比传统的帖子工作得更好,因为在上传时它不会占用浏览器

根据您对@zombat的评论,我猜您有大量的输入,其中大多数在大多数情况下都是空白的。这里有两个建议1)将输入拆分为单独的表格,并仅在触摸/完成后立即发送。2) 使用JavaScript检查表单的状态,并将信息包装成JSON或XML,而不是发布表单数据,只发布数据结构


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

问题是如何从大表单中收集内容?手工书写需要很长时间。你知道它是如何决定发布内容的吗(一些默认机制,如提交表单时)或者逐个检查?@Shore您说您必须手动设置数据,即..这将自动提交表单中的所有字段。您可以将字段子集序列化为查询字符串。请在此处查看他们的文档:我不同意POST用于传输大量数据,然后获取。POST用于更改服务器的状态w第I个新信息。GET用于从服务器检索资源。@约翰:是的,这是每个请求的主要目的。但是,POST请求的大小没有实际限制,而GET请求有已知的限制,超过这些限制时会导致问题。我想我使用的短语是“专门用于”有点不正确,因为这意味着这是POST的唯一目的,当然这不是预期的解释。@Shore-好吧,这一切都是在客户端完成的,它基本上做了与您必须手动完成的相同的事情-它访问所有表单元素并将它们的值连接到一个字符串中。我相信您会赢“我没有注意到性能受到影响。如果您担心它,您可以随时对其进行基准测试。不过,它绝对是回答您问题的正确工具。
$(“表单”“我的表单”)。serialize()
提供了
的内容,可以通过查询字符串格式发送。”(
multiple=Multiple2&check=check2&radio=radio1
)。我问你怎么做的时候,你谈论的是什么。我认为OP指的是发布一个包含多个字段的表单。当你一个一个地发布字段时,有很多样板代码需要编写,我认为OP是在问是否有一种方法可以简单地发布表单上的所有字段。这个问题对我非常有用。