【发布时间】:2018-11-20 09:25:37
【问题描述】:
我想通过 AJAX 从我的 ASP.NET Core 控制器中检索响应。这是我的代码示例
public IActionResult Submit(ViewModel model) {
var isValid = true;
if (isValid) {
return Json(new {
success = true
});
}
return Json(new {
success = false
});
}
CSHTML 部分
<form asp-action="Submit" asp-controller="Home" id="formSubmit" name="formSubmit" method="post" enctype="multipart/form-data">
<input type="text" id="Name" name="Name">
<input type="text" id="Address" name="Address">
<input type="text" id="JobDescription" name="JobDescription">
</form>
$("#formSubmit").on('submit', function(e) {
var datas = {
Name: $("input[name='Name']").val(),
Address: $("input[name='Address']").val(),
JobDescription: $("input[name='JobDescription']").val()
};
var formAction = $(this).attr("action");
$.ajax({
method: "POST",
url: formAction,
data: JSON.stringify(datas),
dataType: "json",
contentType: 'application/json',
success: function(response) {
if (response.success) {
alert("Test");
return true;
} else {
alert("Invalid/Error");
e.preventDefault();
}
});
});
此代码中的问题是重定向/加载到显示{"success":false} 的页面。
我的视图模型
public class ViewModel{
public string Name { get; set; }
public string Address { get; set; }
public string JobDescription { get; set; }
}
【问题讨论】:
-
尝试在浏览器开发工具中查看返回的确切内容。 ajax 也是异步的,你在成功回调上调用 e.preventDefault()
-
成功值未成功返回:函数(响应){}
-
将
e.preventDefault();调用作为submit事件处理程序的第一行。你现在正在回调中执行它,为时已晚。, -
@RoryMcCrossan 谢谢,我发现我收到 HTTP 错误 400(错误请求)我已经在使用 JSON.stringify,知道吗?
-
@Liam formAction 值为 Home/Submit。查看上面更新的示例代码,我添加了 var formAction = $(this).attr("action");
标签: c# jquery json ajax asp.net-core