Jquery Form Plugin还是Jquery序列化?

我想知道jQuery Form Plugin比序列化有什么样的优势?

如果我选择使用表单插件,我可以使用新的jQuery 1.5function吗?

Form Plugin还有什么东西可以阻止多个post吗? 我通常使用Ajax管理器插件来阻止重复的ajaxpost,但我不认为我可以使用Form Plugin。

谢谢

jQuery Form Plugin提供了使用ajax和表单的简单性。 它将使用表单属性来确定提交表单的方式和位置。 表单的method属性告诉插件要使用的请求类型。 表单的action属性告诉它提交表单的位置。

考虑这样的示例表单:

本质上它允许你写:

 $('#myform').ajaxForm(); 

代替

 $.post("submit.php", $("#myform").serialize()); 

jquery Form插件还允许您通过代码中的Ajax提交。

 $('#myform').ajaxSubmit(); 

无论如何,jQuery Forms Plugin将序列化表单,您必须在提交到服务器之前进行序列化。 jQuery Form Plugin只是序列化了幕后的表单。 上面的示例不处理来自服务器的任何响应。
使用下面的代码,您可以将响应附加到其class属性包含“result”的元素。

 $('#myform').ajaxForm({ target : ".result"}); 

您可以使用jQuery支持的任何选择器作为目标选项。

我不确定你是否可以使用延迟方法。 我怀疑它是因为兼容性是针对1.3.2+而本机ajax方法包含在插件中。 这样Deferred对象永远不会从插件内部返回。

jQuery表单确实有一个可以使用的beforeSubmit选项。 因此,添加到上面的代码我们得到:

 $('#myform').ajaxForm({ target: ".result", beforeSubmit: function(arr, $form, options) { // arr: The array of form data // The array of form data takes the following form: // [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] //some code to check if we already submitted the form // return false to cancel submit } }); 

但是,如果用户在提交表单后完成页面,我建议不要这样做。 它只会给客户端代码增加不必要的复杂性。 如果用户在表单提交后将在页面上执行其他操作,那应该没问题。 jQuery Forms Plugin有一个成功选项,如果服务器返回200“OK”响应,则会调用函数回调。 您还可以查看作者网站上的插件http://jquery.malsup.com/form/ ,了解有关该插件的更多信息。

我只是看了一下表单插件,说实话,如果你有点使用jquery经验,没有理由使用插件。 我没有看到任何你不能通过简单的方式使用普通的jquery来完成。 如果我需要使用ajax发送我的完整表单数据,我使用序列化。

这就是基本的ajax调用所需要的,表单插件可以做些什么来使这更容易?

 $.ajax({ type: 'POST', url: post/to/this/url, data: $("#myForm").serializeArray(), success: function() { // Woopie success! window.location.href = successurl; }, error: function(jqXHR, textStatus, errorThrown){ // do something with errors } }); 

如果你想使用Ajax上传文件,那么这个插件是必须的。 查看serializeArray的文档,它明确指出:

文件选择元素中的数据未序列化

这个插件处理文件上传没有任何问题。

当任务像序列化和提交表单一样简单时,您不需要特殊的表单插件。 插件可以包含您可能永远不会使用或不需要的所有function。 此外,如果您的jQuery知识有限,或者您对插件的创建方式不太熟悉,那么按照您的需要自定义插件并不是一件容易的事。 我去寻找一个插件,一个任务太复杂,无法创建,在这种情况下,如果已经有一个插件,为什么重新发明轮子。 一个例子是具有HSB控件的颜色选择器。 如果您不知道颜色是如何工作的,那么进行研究和创建自己的颜色选择器的时间和精力将超过顶部。

您可以使用以下两行作为序列化和提交表单的基本方法。

 var data = $(form).serialize(); $.post('post.php', '&'+data); 

在http://api.jquery.com/jQuery.post/#example-3上阅读有关$ .post()的更多信息

现在,如果您觉得需要使用表单执行复杂的操作并且某些插件中已经提供了这些function,那么尝试它并查看它是如何工作的并不会有什么坏处。

表单插件非常有用,您可以在一次调用中通过ajax提交表单,其中包含与$ .ajax提供的选项相同的选项。 这是简单地劫持界面以增强其行为的好方法。 这也很好,因为它可以通过faux-ajax(iframe)顺利处理文件上传,而无需修改任何内容。

据我所知,表单插件本身不做任何事情以避免多次提交。 我在一个非常大的项目中使用插件来处理各种事情,我通常会通过一些额外的代码自行处理,以跟踪表单是否处于中间提交状态,并避免输入函数再次提交(如果是)。