Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Ajax.begin在chrome MVC 5中不起作用_Jquery_Ajax_Google Chrome_Asp.net Mvc 5_Ajax.beginform - Fatal编程技术网

Jquery Ajax.begin在chrome MVC 5中不起作用

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

我目前正试图在MVC5中实现一个Ajax表单

@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();
});