【问题标题】:Ajax request off an MVC FormAjax 请求关闭 MVC 表单
【发布时间】:2018-12-18 16:04:09
【问题描述】:

我正在尝试执行 ajax 请求,根据 ajax 请求结果,我将允许表单提交给控制器。但是,每次运行 ajax 请求时,我都会收到错误消息。

这是我的 javascript 函数:

function CheckForValidation(e) {
    var scholarshipRequest = $("#scholars").val();
    var aidYearRequest = $("#aidYear").val();
    var amountRequest = $("#amount").val();

    $.ajax({
        type: "POST",
        url: '@Url.Action("Validate_ScholarshipRequest", "RequestController")',
        data: {
            scholarshipId: scholarshipRequest,
            aidYear: aidYearRequest, 
            amount: amountRequest
        }
    }).success(function(response) {
        if (!response.success) {
            e.preventDefault();
            alert(success);
        } else {
            e.preventDefault();
        }
    }).error(function() {
        e.preventDefault();
        alert("Error on Submission");
    });
}

从这里调用这个函数:

$("#SubmitTutorRequestFrm").submit(function(e) {
    e.PreventDefault();
    CheckForValidation(e);
});

我尝试调试代码并在 Validate_ScholarshipRequest 上设置断点,但该方法从未被调用。方法签名是:

public ActionResult Validate_ScholarshipRequest(string scholarshipId, string aidYear, string amount)

这是我表单的开始:

@using (Html.BeginForm("SubmitScholarshipRequest", "Request", FormMethod.Post, new { id = "SubmitTutorRequestFrm" }))

【问题讨论】:

  • 错误是什么?
  • 是用HttpPost属性修饰的action方法吗?
  • 错误是 404 错误,是的,该方法具有 HttpPost 属性
  • 不管 404 是什么,我希望您需要将 e.preventDefault(); 放在函数的开头。您不能等到 AJAX 调用返回 - 请记住 AJAX 是异步的,在运行时,您的表单可能已经提交了自己。
  • 一般情况下,指定“RequestController”时不包含“controller”。

标签: ajax asp.net-mvc html.beginform


【解决方案1】:

只是为了得到这个正式的回答和“关闭”,这是由语法错误引起的:

url: '@Url.Action("Validate_ScholarshipRequest", "RequestController")',

Controller 不应包含在控制器名称中。正确的操作是:

url: '@Url.Action("Validate_ScholarshipRequest", "Request")',

【讨论】:

  • 谢谢。我不确定是否可以将您的评论标记为答案。
猜你喜欢
  • 2018-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 2014-07-11
相关资源
最近更新 更多