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

Javascript 使用jquery.form.js jquery插件会导致我的表单提交两次,javascript,jquery,ajax,asp.net-mvc,forms,Javascript,Jquery,Ajax,Asp.net Mvc,Forms,我正在使用名为“jquery.form.js”()的jquery插件,以便能够在我的ASP.NETMVC项目中使用Ajax上传文件。我遇到的问题是,当我按下表单中的submit按钮时,处理上载的控制器操作将被调用两次。第一次调用HttpPostedFileBase对象时,已使用上载的文件正确设置。第二次调用时,HttpPostedFileBase对象设置为Nothing。我不希望处理程序被调用两次。我怎样才能防止双重职位 观点: @Using Html.BeginForm("Document",

我正在使用名为“jquery.form.js”()的jquery插件,以便能够在我的ASP.NETMVC项目中使用Ajax上传文件。我遇到的问题是,当我按下表单中的submit按钮时,处理上载的控制器操作将被调用两次。第一次调用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>
@使用Html.BeginForm(“Document”、“NewDocument”、Model、FormMethod.Post、New和{.enctype=“multipart/form data”、.id=“submitimage form”})
终端使用
$(文档)。在(“pageshow”上,选择新文档,函数(){
$(“#提交表单”).ajaxForm(函数(){
});
});
控制器处理程序:

<HttpPost()> _
Function Document(ByVal model As MaxDocument, fileInput As HttpPostedFileBase) As ActionResult
     ...
End Function
_
函数文档(ByVal模型作为MaxDocument,fileInput作为HttpPostedFileBase)作为ActionResult
...
端函数

试试
preventDefault

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

  });
</script>

$(文档)。在(“pageshow”上,选择新文档,函数(){
$(“#提交表格”).ajaxForm({
提交之前:函数(){
返回false;
}
});
});

preventDefault
(顾名思义)阻止默认操作的发生。

因此,要防止在使用jquery ajax时重复提交,只需将其放在表单中即可

action=“javascript:null();”


我尝试了您的解决方案,但出现错误:Javascript运行时错误:对象不支持属性或方法“preventDefault”。提交表单后,是否呈现相同的页面?如果是这样,它可能会在
pageshow
上提交您的表单。我刚刚尝试使用
pageshow
,它确实发布了两次我的表单。为什么您要在
页面show
上提交表格?提交表格后,我将转到另一个页面。我将submit放在pageShow中,因为在jquery插件的文档中,它说应该在DOM准备好之后执行,我通常使用pageShow来实现这一点。如果不在pageshow中,您建议将其放在哪里?我尝试将submit移动到pageinit,甚至将其放在所有事件之外(仅在页面脚本中),但双重发布仍然会发生。我的理论是,第一篇文章(正确完成)是通过jquery插件提交Ajax。第二篇文章是一篇失败的普通文章,因为jquerymobile通常无法通过ajax上传文件。如果我根本没有使用jquery插件,那么只会出现第二篇帖子。当我将其放入表单并提交表单时,我会遇到一个javascript运行时错误:在jquery 1.7.1中,访问被拒绝。