许多表单,但只提交更改的表单

时间:2011-05-09 11:02:30

标签: jquery ajax perl

到目前为止我做了什么

我在Perl中使用CGI::ApplicationHTML::Templates创建了一个类似于this的网站。

对于我的数据库中的每个数据集,将显示底部表单。例如。 400次。

底部表单的想法是用户应该能够对现有数据集进行更改,其中顶部表单创建新数据集。

顶层表单起作用,并使用Ajax在数据库中查找非法值,不允许用户输入。

问题

每个数据集都会有一个“保存”按钮,如屏幕截图所示。

如何仅提交与使用Ajax按下的“保存”按钮对应的数据集?

我可以使用纯JQuery做到这一点并且隐藏input就像这样

<form action="" method="post">
   <input name="anchor" value="34" type="hidden">
   <input name="title" type="text" />

   ...

   <button  type="submit">Save</button>
</form>

但是没有Ajax,我无法首先检查数据库中的非法值。

Ajax代码如何显示,只提交保存按钮所属表单的数据集?

1 个答案:

答案 0 :(得分:2)

您可以使用.serialize()方法:

$('form').submit(function() {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function(result) {
            // the AJAX request succeeded => do something
            // with the results returned by the server
        }
    });
    return false;
});

这将订阅所有表单的提交事件(也许您可以调整选择器以仅将其限制为表中包含的表单),并且在提交时它将取消默认操作并通过序列化所有的发送AJAX请求表格领域。