通过jQuery命令提交表单数据

时间:2011-10-02 00:21:19

标签: jquery

我正在进行一个MVC项目,我正在创建一组不同的提交按钮,每个按钮在提交时都会向控制器传递不同的值。

在我当前的代码中,我调用了submit函数,首先创建隐藏的输入元素来传递我想要的数据,如下所示:

    $('#btnCreate').live('click', function () {
    $('#formIndex').submit(function (event) {
        $('#actions').append('<input type="hidden" name="objectId" value="' + $('input[name="objectList"]').val() + '" />');
        $('#actions').append('<input type="hidden" name="choice" value="create" />');
    });
});

我想知道我是否可以将这些隐藏输入的值作为一组参数传递给提交调用,就像你可以使用$ .get,$ .post和$ .ajax函数一样。我已经进行过实验,但似乎还没有找到合适的配方。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

如果您只需将表单中的数据提交到后端,则可以使用  jquery的serialize()函数。

用法:

      $('form').submit(function() {
         var yourdata = $(this).serialize();
        $.ajax({
                type: "POST",
                 url: "check.php",
                data: yourdata,
             success: function(msg){
                      alert( "Data Saved: " + msg );
               }
           });
      });

答案 1 :(得分:1)

我认为你通过添加隐藏的输入参数走在正确的轨道上。我不知道有任何其他方法将数据附加到您的非ajax表单提交。

您可能希望更改有关代码的一些内容:

  1. 使用jquery(as seen here on SO

    构建隐藏的输入

    var input = $("<input>").attr("type", "hidden").attr("name", "mydata").val("bla"); $('#form1').append($(input));

  2. 为了获得更好的性能,请使用delegate()而不是live()。性能优势实际上取决于DOM的深度。但是,代理支持链接到实时不在的地方。 (在jquery 1.7中,使用on()方法消除了所有这些问题...):

    $('body').delegate('#btnCreate', 'click', function () { ... });

  3. 请注意,您可以使用包含btnCreate元素的DOM中较低的值来代替使用body作为容器元素。