使用jquery.form.js jquery插件导致我的表单被提交两次

时间:2013-10-16 16:11:52

标签: javascript jquery ajax asp.net-mvc forms

我正在使用名为“jquery.form.js”(http://malsup.com/jquery/form/#getting-started)的jquery插件,以便能够在我的ASP.Net MVC项目中使用Ajax上传文件。我遇到的问题是,当我按下表单中的提交按钮时,处理上传的控制器操作被调用两次。第一次调用HttpPostedFileBase对象时,使用上传的文件正确设置。第二次调用它时,HttpPostedFileBase对象被设置为Nothing。我不希望两次调用该处理程序。如何防止双重帖?

观点:

@Using Html.BeginForm("Document", "NewDocument", Model, FormMethod.Post, New With {.enctype = "multipart/form-data", .id = "submitimage-form"})
 <input type="file" id="fileInput" name="fileInput" />
 <input type="submit" id="submitbutton" value="Accept" data-mini="true" data-theme="b" data-icon="check" />

End Using

<script src="~/Scripts/jquery.form.js"></script>
<script>
$(document).on("pageshow", '#choosenewdocument', function () {
      $("#submitimage-form").ajaxForm(function () {
      });
  });
</script>

Controller处理程序:

<HttpPost()> _
Function Document(ByVal model As MaxDocument, fileInput As HttpPostedFileBase) As ActionResult
     ...
End Function

2 个答案:

答案 0 :(得分:0)

尝试preventDefault

<script>
$(document).on("pageshow", '#choosenewdocument', function () {
      $("#submitimage-form").ajaxForm({
         beforeSubmit: function() {
           return false;
         }
      });

  });
</script>

preventDefault(顾名思义)可以防止发生默认操作。

答案 1 :(得分:0)

因此,为了防止在使用jquery ajax时双重提交,只需将其放在表单中

  

action="javascript:null();"