通过jQuery命令提交表单数据

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

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

$('#btnCreate').live('click', function () { $('#formIndex').submit(function (event) { $('#actions').append(''); $('#actions').append(''); }); }); 

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

谢谢你的帮助!

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

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

  1. 使用jquery构建隐藏的输入( 如此处所见 )

    var 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 () { ... });

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

如果必须只将表单中的数据提交给后端,可以使用jquery的serialize()函数。

用法:

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