Jquery Ajax.begin在chrome MVC 5中不起作用
我目前正试图在MVC5中实现一个Ajax表单Jquery Ajax.begin在chrome MVC 5中不起作用,jquery,ajax,google-chrome,asp.net-mvc-5,ajax.beginform,Jquery,Ajax,Google Chrome,Asp.net Mvc 5,Ajax.beginform,我目前正试图在MVC5中实现一个Ajax表单 @using (Ajax.BeginForm("Requirement", "Purchase", null, new AjaxOptions { OnSuccess = "redirectionClick", OnFailure = "Retry", HttpMethod = "POST" }, new { id = "RequirementForm", autocomplete = "off" })) { //Various input f
@using (Ajax.BeginForm("Requirement", "Purchase", null, new AjaxOptions { OnSuccess = "redirectionClick", OnFailure = "Retry", HttpMethod = "POST" }, new { id = "RequirementForm", autocomplete = "off" }))
{
//Various input fields
@Html.AntiForgeryToken()
<input type="submit" value="Submit" class="btn btn-primary EqualSized" id="SubmitBtn" style="width:30%">
<input type="button" value="Reset" id="Reset" class="btn btn-primary EqualSized" style="width:30%">
}
和我的控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public void Requirement(Requirement Details)
{
//Logic
}
上面的代码可以在FireFox和IE中使用,但不能在Chrome中使用。这里面有什么我遗漏的吗?如果一个提交按钮被禁用,我认为它不能提交表单,你的点击处理程序在你的提交处理程序之前启动 尝试将您的单击处理程序更改为
$('#SubmitBtn').click(function () {
if ($('#RequirementForm').valid())
$(this).prop('disabled', true).closest('form').submit();
});
另一种方法是处理表单上的submit,如果表单有效,则禁用其中的按钮。您可以使用onbegin或submit事件来解决这个问题。为什么要使用
OnSuccess=“redirectionClick”
,这意味着在提交到Requirement()
方法之后,您可以对同一方法执行另一个ajax调用。redirectionClick
是对控制器中HttpGet操作的调用。要查看刷新后的数据,为什么不使用UpdateTargetId
选项并在post方法中返回部分?(这似乎是一种奇怪的方式——调用2次而不是1次)之所以这样做,是因为表单将处于模态中。主窗口的更新直接导致了问题欢迎来到web开发的世界,在浏览器的工作方式上发现差异并不少见:-)必须指定return false代码>由于表单在IE中提交了两次
$('#SubmitBtn').click(function () {
if ($('#RequirementForm').valid())
$(this).prop('disabled', true).closest('form').submit();
});