【发布时间】: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